0

xcode 分析器告诉我一个方法返回一个带有 +1 保留计数的 Objective-C 对象: 在此处输入图像描述

但是 self.athletes 是我在我的功能之外也需要的一个对象......我该如何解决这个“警告”?再次感谢

运动员是这样声明的:

NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
4

3 回答 3

2

用这一行替换该行:

self.athletes = [NSMutableArray array];

我在这里写了完整的解释:具有保留属性的属性的内存管理

于 2011-09-12T19:18:37.127 回答
1

由于您的属性是使用“保留”定义的,因此使用点表示法将导致额外的保留。[[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.
于 2011-09-12T19:22:08.983 回答
1

有一种很好的方法来处理这个问题(并且您在创建 UI 时已经使用过这种模式)。

NSMutableArray *athletesTemp = [[NSMutableArray alloc] init];

self.athletes = 运动员临时;

[运动员临时释放];

在这里,您不需要承担自动释放对象的负载。

于 2011-09-13T01:07:08.337 回答