objective-c - 为什么有些对象在 objective-c 中使用前不需要初始化?

标签 objective-c cocoa cocoa-design-patterns

为什么有些对象在 objective-c 中使用前不需要初始化? 例如,为什么 NSDate *today = [NSDate date]; 合法?

最佳答案

它们在date 方法中初始化。这是在 Objective-C 中创建自动释放对象的常用方法。这种形式的分配器称为便利分配器。

要了解更多相关信息,请阅读 Apple 的 Cocoa 核心能力文档中关于对象创建的“工厂方法”段落:http://developer.apple.com/library/mac/#documentation/General/Conceptual/DevPedia-CocoaCore/ObjectCreation.html

要为您自己的类创建方便的分配器,请实现一个类方法,以您的类命名(不带前缀)。例如:

@implementation MYThing
...

+ (id)thing
{
  return [[[MYThing alloc] init] autorelease];
}

...
@end

关于objective-c - 为什么有些对象在 objective-c 中使用前不需要初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5992370/

相关文章:

ios - 将 UIViewController 设置为另一个 UIViewController 的属性是不是一个坏主意?

ios - AFNetworking Reachability 第一次无法识别互联网连接

swift - 如何裁剪、修剪视频?

objective-c - 为什么将此协议(protocol)添加到此类别会触发编译器警告?

macos - 将 NSImage 保存到 cocoa 沙箱应用程序的磁盘上 - CRASH

iphone - 匹配 NSString 中单词的开头

objective-c - "data-only"Objective-C 对象的更好替代方案?

cocoa - 是否有一个标准的、有记录的开发模式来创建类似于 iTunes、iCal、iPhoto 等的 UI 布局?

ios - 如何在 Objective C 中按数组元素分组

iphone - 在 xcode/objective-c 项目中使用 C 文件