target_locations[ 0] = [[CLLocation alloc] initWithLatitude : 51.50373056
longitude : 0.129986111];
[target_locations[ 0] release];
考虑上面的代码,是否保持指定对象的保留计数为1的正确方法?
*假设ARC未激活。
答案 0 :(得分:1)
鉴于target_locations
是NSMutableArray
,并且未启用ARC,此处的正确过程如下:
CLLocation * newLocation = [[CLLocation alloc] initWithLatitude : 51.50373056
longitude : 0.129986111];
target_locations[0] = newLocation;
[newLocation release];
您不应该将release
发送到数组访问的结果,因为您没有通过该指针拥有该对象。虽然它在这种情况下有效,但它在语义上是不正确的,并且如果你养成这种习惯,也很可能导致问题。
另外,考虑将target_locations
重命名为targetLocations
,这与Cocoa风格一致。使用下划线使其看起来像一个普通的C数组而不是一个对象。