xcode – ‘self’未设置为'[(super或self)init …]结果时使用的实例变量

- (id)init{
    if(![super init]){
        return nil;
    }
    _RSSItems = [[NSMutableArray alloc]init];
    return self;
}

如果我分析我的项目,我会收到此警告:

Instance variable used while ‘self’ is not set to the result of
‘[(super or self) init…]’

我需要改变什么?

谢谢!

解决方法

如今,Apple的官方推荐是:
- (id)init{
    self = [super init];
    if(self){
        _RSSItems = [[NSMutableArray alloc]init];
    }
    return self;
}

这个想法是允许init(特别是在这种情况下,[super init])返回self以外的对象,在这种情况下,预期的行为是使用该对象 – 最简单的处理方式这只是将自己设置为任何超级回报.还要注意回归自我;无论自我是否为零,都可以正常工作,从而逆转你的if.

当然,大多数课程都没有执行这种切换技巧 – 但这仍然是一种很好的做法,因为Apple希望每个人都使用这种确切的模式用于他们的init,所以即使你的子类目前无需分配给自己,它们也可以很容易地改变这种行为在未来没有警告.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...