好的,如果我有这个:
NSString *lastPushed = (NSString *)[tagStack objectAtIndex:[tagStack count]-1];
.//do something with the last pushed element locally
.//do more cstuff here
.//after doing all the stuff needed in the function
[lastPushed release];
其中tagStack是NSMutableArray
如果我发布了lastPushed,因为它没有被复制或者被引入,它是否只会释放这个引用,还是会实际释放mutableArray中的对象?
答案 0 :(得分:5)
您没有alloc
,new
或copy
或mutableCopy
lastPushed
,为什么要发布它?
由于lastPushed
是指向数组中对象的指针,因此您将释放它。当你的数组认为它有一个指向某个对象的有效指针但你已经释放它并且它已被dealloc
编辑时,这个可能会导致一个问题。
答案 1 :(得分:4)
它将释放数组中的对象,因为lastPushed
和数组都指向同一个对象。
与往常一样,您应遵循管理规则。不要发布任何未创建,保留或复制的内容。
答案 2 :(得分:2)
您不应该发布lastPushed,因为您没有使用alloc
,copy
或new
。 (就这么简单。)
如果你想从可变数组中删除它,你应该使用NSMutableArray(removeObject
或removeObjectAtIndex
等)中的相应方法。否则,你不清楚你是什么重新尝试这样做会在下周/月/年等时咬你。