
换句话说,这种模式是否有效?有没有时间,我不应该在init方法中释放self,或者我应该假设如果控制流进入init,self至少有一个保留计数为1?
- (ID)init{ if ((self = [super init]) == nil) { [self release]; return nil; } //do some init stuff if (somethingFailed) { [self release]; return nil; } return self;}解决方法 如果在初始化方法中需要检查失败,那么是的,你应该释放自己.但是请注意,如果[super init]返回nil,那么将自己发送给self是没有意义的,因为self为nil.这实际上是由苹果皱眉: You should only call
[self release]at the point of failure. If you getnilback from an invocation of the superclass’s initializer,you should not also callrelease.
例:
- (ID)init{ self = [super init]; if(self) { // do some init stuff if (somethingFailed) { [self release] self = nil; } } return self;} 另请参阅Handling Initialization Failure上的Mac Dev Center文档
总结以上是内存溢出为你收集整理的objective-c – 我应该总是为失败的init方法释放self?全部内容,希望文章能够帮你解决objective-c – 我应该总是为失败的init方法释放self?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)