我可以使用
吗?self = nil
在实例方法中,这样当方法执行结束时,我可以在主类中使用if语句:
if (myInstance)
检查是否出现问题?
感谢
答案 0 :(得分:3)
你可以这样做,但没有你想要的效果。
考虑您的objc方法的-[NSArray count]
签名具有以下C函数签名:
NSUInteger NSArray_count(NSArray * self, SEL _cmd) {
self = nil; // ok - this is a variable, local to the function (method).
// now all messages to `self` will do nothing - in this method only.
...
}
因为您指定给nil的指针是方法的本地变量,所以它实际上不会影响外部实例。它改变了方法范围内的指针变量。该变量是传递的参数。实际上,这意味着您已将本地参数设置为nil,但世界其他地方不承认此更改。
答案 1 :(得分:0)
您可以在构造函数中返回nil
,是的。如果您在调用[super init]
后执行此操作,请确保您release
返回的对象具有拥有的保留计数。
话虽如此,您可以做的其他事情是遵循Apple使用*NSError
继续返回nil
,以帮助提供有关您使用代码出错的更多信息。
答案 2 :(得分:0)
你可以从构造函数返回nil,但如果你返回nil,则永远不会释放可能分配的内存!
如果您的对象管理自己的生命周期(以及内存管理),您可以释放它并从特定方法返回nil。 通常这种方法是类方法,因为如果它不涉及用户对该对象的引用,那么释放它是危险的。