如果你可以向Cocoa添加任何东西,它会是什么?是否有任何功能,主要或次要,你会说在Cocoa中缺少。也许有一个轮子你不得不反复发明因为框架中的遗漏?
答案 0 :(得分:16)
内置正则表达式支持(la RegexKit)非常方便。 NSRegularExpression可在iOS 4.0+上使用,但在Mac OS X上仍然无法使用。
从大文本文件逐步读取NSString对象而不将整个内容加载到内存中的简单方法。 (NSInputStream和NSFileHandle只是没有衡量。)
能够选择性地使NSSet / NSMutableSet / NSCountedSet以排序的顺序存储和枚举对象(如binary search tree),这当然是受欢迎的。同样适用于Cocoa数组 - 目前我必须调用类似-[NSArray sortedArrayUsingSelector:]
或-[NSMutableArray sortUsingSelector:]
的内容来获取排序数组,对于集合,我必须先创建数组。
堆/优先级队列。围绕CFBinaryHeap的Cocoa包装器(绝对不如Cocoa集合那么容易使用)可能会有效。
可以为每个密钥存储多个值的字典,通常称为 multiset 。 NSCountedSet几乎是一个multiset / bag,对于键值关联(NSMultiDictionary?)而言,它是相同的,而不是必须自己滚动。
FSEvents的友好包装器。 (CFFileDescriptor做了一些工作,但它不是Cocoa-easy。)
从格式字符串和对象数组(不仅仅是varargs)创建NSString的方法。 This SO answer显示了一个示例。让它与原语一起使用会很棘手......也许是NSPointerArray?
一致的集中式API,可简化各种区域设置的电话号码格式化(和解析)。目前,您必须使用NSNumberFormatter(或NSScanner)进行自己的操作,并且该过程繁琐且容易出错。 (例如,请参阅NSNumberFormatter to format US Telephone Numbers和Remove all but numbers from NSString。)
当然,我一般都是a wide variety of data structures的粉丝,尽管与某些语言相比,Cocoa的简洁性令人耳目一新。
答案 1 :(得分:5)
一种指定在dealloc中自动释放的复制/保留属性的方法。也许
@property (nonatomic, copy, dealloc) NSString* name;
当然还有RegexKit。
答案 2 :(得分:4)
核心数据的多用户支持。人们可以梦想:) 但至少Core Data现在可以通过OS 3.0在iPhone上使用。
答案 3 :(得分:3)
将整个Core Data 实体标记为瞬态的方法。这对于实施Bonjour共享特别有用。
例如,假设我有一个类似iTunes的模型,包含Playlist
和Song
个实体。目前,为了实现Bonjour共享,我创建了两个额外的NSObject
子类TransientPlaylist
和TransientSong
,它们实现了与核心数据对应的所有相同的方法。
我不需要双重模型类的数量只是为了拥有我的对象的瞬态版本 - 而不是当我希望它们的行为完全相同时,没有持久性。
(是的,另一种选择是拥有一个内存持久性存储库,其中包含您想要瞬态的所有实体。无论哪种方式,都是不必要的开销)
答案 4 :(得分:3)
围绕Keychain Services的更友好的包装。
答案 5 :(得分:2)
答案 6 :(得分:2)
@property (..,copy)
支持可变类型类(NSMutableArray
,NSMutableDictionary
等)。目前,如果为可变类型类的属性赋值,则创建的对象将是不可变的(由于副本)。
答案 7 :(得分:1)
正确支持网络服务。
答案 8 :(得分:1)
从.NET世界进入Cocoa我有一个请求:LINQ!
在过去的几个月里,我逐渐喜欢能够在我附近的任何收藏中使用LINQ。
答案 9 :(得分:0)
当然,从管理对象上下文到SQL数据库服务器的合理界面非常酷。
我希望看到使用以编程方式创建的单元格编写自定义视图的更好示例,所有这些都可以很好地自动滚动。
此外,IB对具有工作分离器的复杂多窗格窗口的支持似乎存在真正的差距。我想他们正在研究这个问题?
无论决议独立发生了什么,是吗?
答案 10 :(得分:0)
内置JSON支持导入/导出。
答案 11 :(得分:0)
绝对是Carbon HotKeys的对应物!