13

如果你可以在 Cocoa 中添加任何东西,那会是什么?您会说 Cocoa 中是否缺少任何主要或次要功能。也许因为框架中的一个遗漏,你不得不一遍又一遍地发明一个轮子?

4

12 回答 12

16
  • 内置的正则表达式支持(la RegexKit)将非常方便。NSRegularExpression 在 iOS 4.0+ 上可用,但在 Mac OS X 上仍然不可用。

  • 一种从大型文本文件中逐步读取 NSString 对象的简单方法,而无需将整个内容加载到内存中。(NSInputStream 和 NSFileHandle 不能满足这一点。)

  • 有选择地使 NSSet/NSMutableSet/NSCountedSet 按排序顺序存储和枚举对象(如二叉搜索树)的能力肯定会受到欢迎。Cocoa 数组也是如此——目前我必须调用类似-[NSArray sortedArrayUsingSelector:]or-[NSMutableArray sortUsingSelector:]来获取排序数组,而对于集合,我必须首先创建数组。

  • 堆/优先级队列。围绕CFBinaryHeap的 Cocoa 包装器(绝对不像 Cocoa 集合那样容易使用)可能会起作用。

  • 可以为每个键存储多个值的字典,通常称为multiset。NSCountedSet 几乎是一个多重集/包,对于键值关联(NSMultiDictionary?)有相同的东西会很好,而不必自己滚动。

  • FSEvents的友好包装器。(CFFileDescriptor 做了一些工作,但它不是 Cocoa 简单的。)

  • 一种从格式字符串和对象数组(不仅仅是可变参数)创建 NSString 的方法。这个 SO 答案显示了一个例子。让它与原语一起工作会很棘手......也许是一个NSPointerArray?

  • 一致的集中式 API,可简化各种语言环境的电话号码格式(和解析)。目前,您必须使用 NSNumberFormatter(或 NSScanner)自行开发,该过程繁琐且容易出错。(例如,请参阅NSNumberFormatter 格式化美国电话号码从 NSString 中删除除数字之外的所有数字。)

当然,总的来说,我绝对是各种数据结构的粉丝,尽管 Cocoa 的简单性与某些语言相比令人耳目一新。

于 2009-06-19T20:09:10.493 回答
5

一种指定在 dealloc 中自动释放的复制/保留属性的方法。也许

@property (nonatomic, copy, dealloc) NSString* name;

当然还有 RegexKit。

于 2009-06-21T11:26:42.083 回答
4

Core Data 的多用户支持。可以梦想 :)
但至少 Core Data 现在可以在装有 OS 3.0 的 iPhone 上使用。

于 2009-06-19T21:24:34.677 回答
3

一种将整个核心数据实体标记为瞬态的方法。这对于实现 Bonjour 共享特别有用。

例如,假设我有一个类似 iTunes 的模型,带有PlaylistSong实体。目前,为了实现 Bonjour 共享,我创建了两个额外的NSObject子类TransientPlaylistTransientSong,它们实现了与 Core Data 对应的所有相同方法。

我不应该仅仅为了拥有我的对象的瞬态版本而将模型类的数量翻倍——而不是当我希望它们的行为完全相同时,没有持久性。

(是的,另一种选择是拥有一个内存中的持久存储,其中包含您想要暂时的所有实体。无论哪种方式,这都是不必要的开销)

于 2009-06-20T21:52:44.820 回答
3

Keychain Services的更友好的包装器。

于 2010-05-07T02:46:30.570 回答
2
  • 良好的正则表达式支持
  • AppKit 中的布局管理器。自动调整大小并不适合复杂的 GUI。
于 2009-06-21T02:35:16.137 回答
2

@property (..,copy)支持可变类型类(NSMutableArray,NSMutableDictionary等)。目前,如果您为可变类型类的属性分配值,则创建的对象将是不可变的(由于复制)。

于 2009-06-24T06:54:30.090 回答
1

对 Web 服务的适当支持。

于 2009-06-19T18:50:36.480 回答
1

从 .NET 世界进入 Cocoa,我有一个要求:LINQ!

在过去的几个月里,我越来越喜欢能够在我附近的任何集合上使用 LINQ。

于 2009-06-24T07:04:47.637 回答
0

当然,从管理对象上下文到 SQL 数据库服务器的合理接口会非常酷。

我希望看到用程序创建的单元格编写自定义视图的更好示例,所有这些都可以很好地自动滚动。

此外,IB 对带有工作分离器的复杂多窗格窗口的支持似乎存在真正的差距。我想他们正在研究这个?

不管决议独立性发生了什么,对吧?

于 2009-06-20T05:11:37.497 回答
0

对导入/导出的内置 JSON 支持。

于 2010-05-03T23:22:25.383 回答
0

绝对是Carbon HotKeys的对应物!

于 2010-08-21T21:12:12.990 回答