NSMutableArray保留计数

时间:2012-03-27 18:46:40

标签: iphone objective-c ios

    target_locations[ 0] = [[CLLocation alloc] initWithLatitude :  51.50373056 
                                                      longitude :  0.129986111];
   [target_locations[ 0] release];

考虑上面的代码,是否保持指定对象的保留计数为1的正确方法?

*假设ARC未激活。

1 个答案:

答案 0 :(得分:1)

鉴于target_locationsNSMutableArray,并且未启用ARC,此处的正确过程如下:

CLLocation * newLocation = [[CLLocation alloc] initWithLatitude :  51.50373056 
                                                      longitude :  0.129986111];
target_locations[0] = newLocation;
[newLocation release];

您不应该将release发送到数组访问的结果,因为您没有通过该指针拥有该对象。虽然它在这种情况下有效,但它在语义上是不正确的,并且如果你养成这种习惯,也很可能导致问题。

另外,考虑将target_locations重命名为targetLocations,这与Cocoa风格一致。使用下划线使其看起来像一个普通的C数组而不是一个对象。