Kyl*_*yle 9 iphone cocoa objective-c
我正在开发一个iPhone项目,我希望从NSMutableArray中检索一个对象,从数组中删除该对象,然后再使用它.代码看起来像这样:
NSMutableArray * array;
// fill the array
NSObject * obj = [array lastObject];
[array removeLastObject];
// do something with obj (in the same function)
Run Code Online (Sandbox Code Playgroud)
array是唯一对正在访问的对象具有retain的实体.这样做安全吗?我认为这只有在lastObject自动释放对象的情况下才能工作,如果确实如此,我无法弄明白.
syl*_*aar 11
为什么不打电话
[array removeLastObject]
Run Code Online (Sandbox Code Playgroud)
在你的功能结束?这是少发布/保留的一个.它可能会使您的代码更具可读性/更少混乱.
要记录Apple文档:
与NSArray一样,NSMutableArray的实例保持对其内容的强引用.如果不使用垃圾回收,则在将对象添加到数组时,该对象会收到保留消息.从可变数组中删除对象时,它会收到一条释放消息.如果没有对该对象的进一步引用,则表示该对象已被释放.如果您的程序保留对此类对象的引用,则引用将变为无效,除非您在将对象从数组中删除之前向该对象发送保留消息.例如,如果anObject在从数组中删除之前未保留,则下面的第三个语句可能会导致运行时错误:
id anObject = [[anArray objectAtIndex:0] retain];
[anArray removeObjectAtIndex:0];
[anObject someMessage];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3194 次 |
| 最近记录: |