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

前端之家收集整理的这篇文章主要介绍了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,所以即使你的子类目前无需分配给自己,它们也可以很容易地改变这种行为在未来没有警告.

猜你在找的iOS相关文章