當我們寫作[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