簡體   English   中英

函數調用后保留計數。 我應該擔心嗎?

[英]Retain Count after function call. should i worry?

我通常不檢查保留計數,直到程序泄漏。 但是今天(我不),我檢查了保留數,現在我很困惑。

NSString *strErrorMessage; 
    strErrorMessage= [NSString  stringWithFormat:@"Email and Password are mandatory"];
            NSLog(@"%d", [strErrorMessage retainCount]); // retain count 1
    [objAppDelegate ShowMesssage:strErrorMessage];
    NSLog(@"%d", [strErrorMessage retainCount]); // retain count 3
    return;

我不明白這一點。 由於我沒有分配strErrorMessage,所以我不必釋放它的儀式嗎?

誰擁有strErrorMessage的所有者。

-(void) ShowMesssage: (NSString *)strError
 {
 UIAlertView *alertError = [[UIAlertView alloc] initWithTitle:strTitle   message:strError delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
 [alertError show];
 [alertError release];
   }

我必須在這里釋放strError嗎?(我以為沒有,但是保留計數為3)。

通常,檢查保留計數不是調試內存泄漏的好方法,因此,只要您了解要分配/釋放內存的位置,我就不必擔心太多。 在這里,您可以自動釋放錯誤消息並手動釋放alertError,所以我認為您還可以。

我猜這兩個額外的保留都在UIAlertView 它必須至少保留一次錯誤消息字符串才能正常工作。 第二個保留可能只是一些內部實現細節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM