【发布时间】:2023-04-07 10:40:01
【问题描述】:
我知道之前已经讨论过这个问题,例如:In Objective-C why should I check if self = [super init] is not nil?
- (instancetype)init
{
self = [super init]; // Is potentially nil
if (self)
{
// Initialization code here…
}
return self;
}
我知道self 可能是nil,但这有什么关系呢?我看到的所有答案都只是说self 可能是nil,但没有解释为什么它很重要。如果您向nil 发送消息,则不会发生任何事情。您不会在任何其他代码中进行零检查(某些情况下除外),那么为什么需要在 init 中进行检查?
【问题讨论】:
-
You don't nil-check in any other code (except in some cases)- 这句话让我对你的未来感到害怕 -
@SimonMcLoughlin 在 Objective-C 中,除了
init...方法外,通常不会进行 nil-check。 -
@user3477950 一个是 Objective-c 开发人员,可以想到数百个检查 nil 的情况。仅仅因为它不会崩溃(并非在所有情况下),并不意味着 nil 是一个合适的接收值。向最终用户显示“(null)”是否合适?肯定不是
-
除了@SimonMcLoughlin,我能想到的主要场景是你不想将 nil 存储在 NSArray 或 NSDictionary 中。
-
@user3477950 这样的cmets和态度导致代码和UI设计非常糟糕,期望世界永远适合你
标签: objective-c initialization null self super