Если бы вы могли добавить что-нибудь в Cocoa, что бы это было? Есть ли какие-либо функции, основные или второстепенные, которые вы бы сказали, отсутствуют в Cocoa. Возможно, есть колесо, которое вам пришлось изобретать снова и снова из-за упущения в рамках?
Что отсутствует в Cocoa?
Ответ 1
-
Поддержка встроенного регулярного выражения (a la RegexKit) будет чрезвычайно удобна. NSRegularExpression доступен на iOS 4.0+, но он пока недоступен в Mac OS X.
-
Простой способ постепенного чтения объектов NSString из большого текстового файла без загрузки всего объекта в память. (NSInputStream и NSFileHandle просто не подходят для этого.)
-
Возможность необязательно сделать NSSet/NSMutableSet/NSCountedSet хранить и перечислять объекты в отсортированном порядке (например, двоичное дерево поиска) безусловно, будет рад. То же самое касается массивов Cocoa - в настоящее время мне нужно вызвать что-то вроде
-[NSArray sortedArrayUsingSelector:]
или-[NSMutableArray sortUsingSelector:]
, чтобы получить отсортированный массив, а для наборов мне нужно сначала создать массив. -
Очередь кучи/приоритета. Обертка Cocoa вокруг CFBinaryHeap (что определенно не так просто использовать как коллекции Cocoa), вероятно, будет работать.
-
Словарь, который может хранить несколько значений для каждого ключа, обычно называемого мультимножеством. NSCountedSet - это в значительной степени мультисеть/сумка, и было бы неплохо иметь то же самое для ассоциаций с ключом (NSMultiDictionary?) Вместо того, чтобы сворачивать мои собственные.
-
Дружественная оболочка для FSEvents. (CFFileDescriptor выполняет некоторую работу, но не Cocoa -просто.)
-
Способ создания NSString из строки формата и массива объектов (а не только varargs). Этот ответ SO показывает пример. Получение его для работы с примитивами было бы сложным... Может быть, NSPointerArray?
-
Согласованные, централизованные API, которые упрощают форматирование (и разбор) телефонных номеров для различных локалей. В настоящее время вы должны сворачивать свой собственный с помощью NSNumberFormatter (или NSScanner), и этот процесс является утомительным и подверженным ошибкам. (Например, см. NSNumberFormatter для форматирования номеров телефонов США и Удалить все, кроме номеров из NSString.)
Конечно, я определенно поклонник широкого спектра структур данных, хотя Cocoa простота освежает по сравнению с некоторыми языками.
Ответ 2
Способ задания свойств копирования/сохранения, которые автоматически освобождаются в dealloc. Возможно,
@property (nonatomic, copy, dealloc) NSString* name;
И RegexKit, конечно.
Ответ 3
Многопользовательская поддержка основных данных. Можно мечтать:)
Но по крайней мере Core Data теперь доступен на iPhone с ОС 3.0.
Ответ 4
Способ флага всех объектов Core Data как переходный. Это было бы особенно полезно для совместного использования Bonjour.
Например, скажем, у меня есть iTunes-подобная модель с объектами Playlist
и Song
. В настоящее время для реализации совместного использования Bonjour я создаю два дополнительных подкласса NSObject
, TransientPlaylist
и TransientSong
, которые реализуют все те же методы, что и их сопоставления с основными данными.
Мне не нужно удваивать число классов модели только для того, чтобы иметь временные версии моих объектов, а не когда я хочу, чтобы они вел себя точно так же, sans persistence.
(Да, другой вариант - иметь постоянное хранилище в памяти, в котором размещаются все объекты, которые вы хотите быть временными. В любом случае это лишние накладные расходы)
Ответ 5
Более дружественная оболочка вокруг Услуги брелка.
Ответ 6
- Хорошая поддержка регулярных выражений
- Менеджеры макетов в AppKit. Авторезизация просто не сокращает ее для сложных графических интерфейсов.
Ответ 7
@property (..,copy)
поддержка изменяемых типов классов (NSMutableArray
, NSMutableDictionary
и т.д.). В настоящее время, если вы присваиваете значение свойству для класса изменяемого типа, созданный объект будет не изменяемым (из-за копии).
Ответ 8
Надлежащая поддержка веб-сервисов.
Ответ 9
Входя в Cocoa из мира .NET, у меня есть один запрос: LINQ!
За последние несколько месяцев я полюбил возможность использовать LINQ в любой коллекции, которая приближается ко мне.
Ответ 10
Разумеется, разумный интерфейс от управления объектными контекстами к серверам баз данных SQL будет довольно крутым.
Мне бы хотелось увидеть лучшие примеры написания пользовательских представлений с программно создаваемыми ящиками, и все они автоматически прокручиваются.
Кроме того, существует реальный пробел в поддержке IB для сложных многослойных окон с рабочими разделителями. Я полагаю, они работают над этим?
И что бы ни случилось с разрешением независимости, да?
Ответ 11
Встроенная поддержка JSON для импорта/экспорта.
Ответ 12
Определенно копия Carbon HotKeys!