可可中缺少啥? [关闭]

Posted

技术标签:

【中文标题】可可中缺少啥? [关闭]【英文标题】:What's missing in Cocoa? [closed]可可中缺少什么? [关闭] 【发布时间】:2010-11-04 09:25:36 【问题描述】:

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

【问题讨论】:

这是一个异端:让它在其他平台上可用。 【参考方案1】:

内置正则表达式支持(如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 几乎是一个多重集/袋子,对于键值关联(NSMultiDictionary?)也有相同的东西,而不是我自己滚动。

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

一种从格式字符串和对象数组(不仅仅是可变参数)创建 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 的简单性与某些语言相比令人耳目一新。

【讨论】:

NSPredicate 通过 MATCHES 表达式至少包含基本的正则表达式支持。 是的。但是regexkit.sourceforge.net 走得更远,类似的东西会更加强大和灵活。 既然 SO 的 RSS 刚刚复活了这个……对于你的第二点,我想说:普遍的流接口,带有文本和二进制流(以及两者之间的适配器)。当我在这里时,字符串的接口是根据 Unicode 代码点定义的,而不是 UTF-16 代码元素。【参考方案2】:

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

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

当然还有 RegexKit。

【讨论】:

这更像是 Objective-C 的东西而不是 Cocoa 的东西。【参考方案3】:

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

【讨论】:

为什么人们一直要求这个是我无法理解的。多用户支持将是一项重大的设计更改,并为那些在其预期环境中使用 Core Data 的人带来额外的麻烦。但是将 Core Data 桥接到多用户服务器的单独框架?是的! Core Data 不是数据库。在 Core Data 中请求多用户支持与在 XML 中请求多用户支持是一样的。这只是没有意义的事情。【参考方案4】:

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

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

我不需要将模型类的数量加倍只是为了拥有我的对象的瞬态版本——而不是当我希望它们的行为完全相同时,sans持久性。

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

【讨论】:

CoreData 在技术上是一个独立于 AppKit 和 Foundation 的框架,由不同的团队开发,但与 Cocoa 的联系足以让人们认为这是 Cocoa 中缺少的东西......方式... :-) 我并不是说拥有它不会很酷,只是想知道需要在哪里添加它。【参考方案5】:

对Keychain Services 进行更友好的包装。

【讨论】:

【参考方案6】: 良好的正则表达式支持 AppKit 中的布局管理器。自动调整大小并不适合复杂的 GUI。

【讨论】:

你指的是什么类型的布局管理器?像Java中的那些?示例会很好地了解您所了解的内容。 是的,类似于 Java 的东西会做。任何可以解决katidev.com/blog/2008/02/12/why-i-say-no-to-autoresizing 上表达的问题的方法 正则表达式开始出现在 iOS 4 中,因此它们可能会在 10.7 中添加到桌面。至于布局管理器,看看这种方式在NSViews上添加约束:github.com/davedelong/CHLayoutManager【参考方案7】:

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

【讨论】:

【参考方案8】:

对网络服务的适当支持。

【讨论】:

【参考方案9】:

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

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

【讨论】:

【参考方案10】:

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

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

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

决议独立性发生了什么,嗯?

【讨论】:

【参考方案11】:

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

【讨论】:

【参考方案12】:

绝对是Carbon HotKeys的对应物!

【讨论】:

嗯,Carbon 的那部分已更新为 64 位,并且有一堆好的 Cocoa 包装器,比如 PTHotKey 或我自己的 DDHotKey:github.com/davedelong/DDHotKey

以上是关于可可中缺少啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

寻找可可谷歌地图包装框架[关闭]

可可的最佳记录器[关闭]

Xcode 12 无法构建可可豆荚 - 生成伞头 [关闭]

如何在可可中保持应用程序状态

AutoCAD关闭“代理信息”提醒 - 解决“缺少应用程序AcDgnLS”的问题

使用可可豆荚的 Parse 1.7.1 中缺少 PFImageView