Objective c ios初始化函数内部的实例以在外部使用
xcode分析器告诉我,方法返回的Objective-C对象的保留计数为+1: 但自我运动员是一个在我的职能之外我也需要的对象。。。我如何解决这个“警告”? 再次感谢 运动员的声明如下:Objective c ios初始化函数内部的实例以在外部使用,objective-c,ios,instance,retain,analyzer,Objective C,Ios,Instance,Retain,Analyzer,xcode分析器告诉我,方法返回的Objective-C对象的保留计数为+1: 但自我运动员是一个在我的职能之外我也需要的对象。。。我如何解决这个“警告”? 再次感谢 运动员的声明如下: NSMutableArray *athletes; @property (nonatomic, retain) IBOutlet NSMutableArray *athletes; 将该行替换为该行: self.athletes = [NSMutableArray array]; 我在这里写了完整的解释:
NSMutableArray *athletes;
@property (nonatomic, retain) IBOutlet NSMutableArray *athletes;
将该行替换为该行:
self.athletes = [NSMutableArray array];
我在这里写了完整的解释:用这一行替换那一行:
self.athletes = [NSMutableArray array];
我在这里写了完整的解释:因为您的属性是用“retain”定义的,所以使用点符号将导致额外的retain。[[NSMutableArray alloc]init]返回的retain计数为1,然后使用属性声明生成的setter函数设置属性时,retain计数为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.
因为您的属性是用“retain”定义的,所以使用点符号将导致额外的retain。[[NSMutableArray alloc]init]返回的retain计数为1,然后使用属性声明生成的setter函数设置属性时,retain计数为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] 自我运动员=运动员 [athletesTemp发布]
在这里,您不需要承载自动释放对象的负载 有一个很好的方法来处理这个问题(您在创建UI时已经使用了这个模式) NSMutableArray*athletesTemp=[[NSMutableArray alloc]init] 自我运动员=运动员 [athletesTemp发布] 在这里,您不需要承载自动释放对象的负载