2011-08-31 39 views
0

在內存管理方面,在以下方法中修改輸入變量content是否正確?修改Objective-C方法中的輸入NSString值

- (NSMutableArray *) extractResults:(NSString *)content { 
    ... 
    regex = [NSRegularExpression ...]; 
    content = [regex stringByReplacingMatchesInString:content 
              options:0 
               range:NSMakeRange(0, [content length]) 
             withTemplate:@""]; 
    ... 
} 

在這種特殊情況下,我不在乎值是否在方法範圍外保持修改。只是想知道該分配是否會產生內存泄漏。

謝謝!

回答

1

不,它不會產生泄漏,因爲stringByReplacing...的返回值是自動發佈的。但是,您應該知道,您根本沒有修改對象contentNSString是不可變的,所以你不能這樣做,你正在創建一個新實例並將其分配給變量。

+0

那麼'content'的舊值呢?是否在分配發生時發佈,就好像我使用的是基於屬性的setter?順便說一下,在這個方法'內容'外也是一個自動發佈的'NSString'。 – elitalon

+0

舊的價值是autoreleased,就像你所期望的一樣。 – omz

0

由於content變量是你的本地變量,所以它是正確的。您只能更改存儲在變量content中的內存地址。不要忘記釋放內存,你通過變量content