我正在使用ARC,並且我知道autoreleasepool向其中的所有元素髮送發佈。考慮下面的例子。@autoreleasepool做什麼?
-(NSString*)someMethod{
NSString *[email protected]"sample text inside string 1"; // string1 add to main autorelease pool
NSString *string2=[[NSString alloc] init]; // string2 retain count is 1
[email protected]"sample text inside string 2"; // just assigning
return string1;
}
-(void)viewDidLoad{
NSString *returnedString=[self someMethod];
}
1.我的問題是我如何完全 的someMethod釋放字符串2?
2.如何從viewDidLoad方法中完全釋放string1?
注:我使用ARC
,如果我使用的someMethod @autoreleasepool那麼我認爲這會破壞雙方字符串1和字符串。不會嗎?
又會有怎樣使用@autoreleasepool的效果的someMethod
-(NSString*)someMethod{
@autoreleasepool{
NSString *[email protected]"sample text inside string 1"; // string1 add to main autorelease pool
NSString *string2=[[NSString alloc] init]; // string2 retain count is 1
[email protected]"sample text inside string 2"; // just assigning
}
return string1;
}
值得注意的是,在所有這樣的數百個問題出現之後,沒有有用的例子可以使用文字字符串來完成。它們是編譯時常量,因此不會被標準內存管理處理。 – jrturton 2013-05-01 11:01:16
[Objective-C:爲什麼autorelease(@autoreleasepool)仍然需要使用ARC?](http://stackoverflow.com/questions/9086913/objective-c-why-is-autorelease-autoreleasepool-still-needed -with-arc) – Igor 2017-01-24 13:01:23