我在以下两个代码行中遇到问题
NSDictionary* last = [[arrHistory lastObject] autorelease];
[arrHistory removeLastObject];
在调试器中我可以看到,在执行第一个代码行之后,last
指向具有值对的字典(应该如此)。
问题是第二个代码行。它接缝破坏字典的内容。我认为第1行的autorelease
可以解决这个问题但是,它不是。
答案 0 :(得分:12)
您需要做的是向对象发送retain
消息。
NSDictionary* last = [[arrHistory lastObject] retain];
[arrHistory removeLastObject];
集合在删除后会释放对象,这就是您需要发送retain
消息以获取其所有权的原因。
答案 1 :(得分:0)
arrHistory
拥有其成员,在取得其所有权之前,不应致电其成员的release / autorelease
。
如果要在删除后使用最后一个对象,可以这样做:
NSDictionary* last = [[arrHistory lastObject] retain] autorelease];