当我们写作[Obj autorelease]时会发生什么?当我们在Autorelease池中编写[Obj autorelease]时会发生什么?
例如:
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];<br>
NSMutableString *str = [[[NSMutableString alloc]initWithString:@""] autorelease];<br>
NSLog(str);<br>
[str appendString:@" I"];<br>
NSLog(str);<br>
[str appendString:@" like"];<br>
NSLog(str);<br>
[str appendString:@" programming"];<br>
NSLog(str);<br>
[pool drain];<br>
NSLog(@"%@",str); //invalid
我很困惑,因为我读的是“你可以通过发送一个自动释放消息的对象添加到当前的自动释放池后发布”,所以当我写
NSMutableString *str = [[[NSMutableString alloc]initWithString:@"my"] autorelease];
1)执行完上面的语句后, 现在str已经添加到autorelease池了吗?
2)如果str加入到自动释放 池,那么如果我们 后指海峡这(释放/排水 池),就像...之前
[str appendString:@" I"];
NSLog(str);
[str appendString:@" like"];
NSLog(str);
[str appendString:@" programming"];
NSLog(str);
然后STR的引用将可从autorelease池(因为str现在被添加到autorelease池)或str的初始内存位置....?
令人困惑...... !!任何人都可以给我清楚的想法!
请勿使用br标签。使用“101010”按钮来格式化代码 – 2010-09-13 15:51:03