我正在查看其他人的代码并注意到他们在他们不拥有的NSString上调用了'release'(从未在任何地方调用alloc / retain / copy而且它不是属性)。
对我来说这看起来有点奇怪,如果你对一个你不“拥有”或者其引用数已经为0的对象调用'release',我会想知道是否会出现任何奇怪的行为?下面的代码编译/运行没有警告,所以我猜测没有问题,但我只是好奇。
// Releasing an object I don't own
NSString *notMyString = [NSString stringWithString:@"Not mine."];
[notMyString release]; // Ignored?
// Releasing an object I own, twice
NSString *myString = [[NSString alloc] initWithString:@"Mine."];
[myString release]; // Ref count = 0
[myString release]; // Ref count = ?
答案 0 :(得分:15)