cocoa-touch - 当我们可以写[NSString new]时,为什么我们有[NSString string]?

标签 cocoa-touch cocoa constructor

显然我指的不仅仅是 NSString;有[NSDictionary字典][NSArray数组]等等。但是,当我们可以发送 [NSDictionary new][NSArray new] 等时,为什么还要使用所有这些方法呢?

最佳答案

原因主要是历史原因,因为两者的区别在于创建对象的引用计数;自动引用计数几乎完全消除了对引用计数的关心。

+字符串 and methods like it返回不属于调用者所有的​​对象(它们位于自动释放池中)。另一方面,+new"four NARCs" 之一。 ,并且它确实创建拥有引用。

在 ARC 之前,您会选择具有特定情况下所需的内存管理含义的选项。现在,您可以使用您喜欢的任何一个。您的代码级别没有区别。

在某些循环情况下,您可能会发现最好使用+new,因为 still does apparently+string 相比,缩短了对象的生命周期。

关于cocoa-touch - 当我们可以写[NSString new]时,为什么我们有[NSString string]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21839313/

相关文章:

c# - 如何在 Monotouch 中实现多个委托(delegate)?

iphone - 整个应用程序的圆角屏幕角和状态栏

cocoa-touch - 使用 UISliders 值更改 UILabels 文本

objective-c - 在 iOS 应用程序之间使用相同的身份验证凭据

C++是否有构造函数的堆栈框架

c++ - 如何处理构造函数的参数过多?

c++ - 关于 const 限定符和构造函数的问题

macos - 在 NSTableView OS X 中显示 rowActions

cocoa - NSTask字符串编码问题

objective-c - 将命令行工具与 Cocoa 应用程序一起打包?