gpt4 book ai didi

xcode - 'self' 未设置为 '[(super or self) init...]' 的结果时使用的实例变量

转载 作者:行者123 更新时间:2023-12-01 05:27:04 25 4
gpt4 key购买 nike

- (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...]'



我需要改变什么?

谢谢!

最佳答案

如今,苹果官方的推荐是:

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

这个想法是允许 init(特别是在这种情况下, [super init] )返回一个除 self 之外的对象,并且在这种情况下的预期行为是使用该对象 - 处理这个问题的最简单方法是只需将 self 设置为 super 返回的任何值。另请注意,无论 return self; 是否为零, self 都可以正常工作,因此您的 if 反转。

当然,大多数类都不会执行这种切换技巧——但这无论如何都是很好的做法,因为 Apple 希望每个人都为他们的 init 使用这种确切的模式,所以即使您的子类当前没有分配给 self ,他们也可以很容易地改变以后这种行为毫无征兆。

关于xcode - 'self' 未设置为 '[(super or self) init...]' 的结果时使用的实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8954265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com