xcode 分析器告诉我一个方法返回一个带有 +1 保留计数的 Objective-C 对象:
但是 self.athletes 是我在我的功能之外也需要的一个对象......我该如何解决这个“警告”?再次感谢
运动员是这样声明的:
NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
xcode 分析器告诉我一个方法返回一个带有 +1 保留计数的 Objective-C 对象:
但是 self.athletes 是我在我的功能之外也需要的一个对象......我该如何解决这个“警告”?再次感谢
运动员是这样声明的:
NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
由于您的属性是使用“保留”定义的,因此使用点表示法将导致额外的保留。[[NSMutableArray alloc] init] 返回的保留计数为 1,然后当您使用属性声明生成的 setter 函数设置属性时,保留计数为 2。
要修复,要么:
self.athletes = [NSMutableArray array]; // Returns an autoreleased object
或者,您也可以这样做:
athletes = [[NSMutableArray alloc] init]; // Doesn't use the setter generated by the property declaration, so doesn't retain again.
有一种很好的方法来处理这个问题(并且您在创建 UI 时已经使用过这种模式)。
NSMutableArray *athletesTemp = [[NSMutableArray alloc] init];
self.athletes = 运动员临时;
[运动员临时释放];
在这里,您不需要承担自动释放对象的负载。