gpt4 book ai didi

cocoa - 从 init 返回 nil

转载 作者:行者123 更新时间:2023-12-03 18:00:22 25 4
gpt4 key购买 nike

摘自《Mac OS X 应用程序编程指南》,“Initializing a New Document ”(添加了重点):

If you override init, make sure that your override never returns nil. Returning nil could cause a crash (in some versions of AppKit) or present a less than useful error message. If, for example, you want to prevent the creation or opening of documents under circumstances unique to your application, override a specific NSDocumentController method instead.

来自 Xcode 自动生成的 MyDocument.m:

- (id)init
{
self = [super init];
if (self) {
// Add your subclass-specific initialization here.
// If an error occurs here, send a [self release] message and return nil.
}
return self;
}

为什么苹果在这里给出相互矛盾的建议?

最佳答案

一般习惯用法是,如果发生错误,-init 可能会释放 self 并返回 nil。您引用的“永不返回 nil”的文档专门讨论了子类化 NSDocument。基本上,在一般情况下返回 nil 是没问题的,但对于 NSDocument 来说这是一个坏主意。 MyDocument.m 的模板文件不了解 NSDocument 情况,它只是为您提供 -init 方法的通用模板。

关于cocoa - 从 init 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7395027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com