NSString *string=[temp objectAtIndex:row];
[temp removeObjectAtIndex:row];
從中string
創建不再存在的對象;我認爲這個語法是直接賦值的,因此string
應該不再存在了,對吧?這個NSString不再存在嗎?
因此,無論我用stringWithFormat
從對象創建一個新的字符串,或發送retain
到string
是安全的,這是正確的推理?
NSString *string=[temp objectAtIndex:row];
[temp removeObjectAtIndex:row];
從中string
創建不再存在的對象;我認爲這個語法是直接賦值的,因此string
應該不再存在了,對吧?這個NSString不再存在嗎?
因此,無論我用stringWithFormat
從對象創建一個新的字符串,或發送retain
到string
是安全的,這是正確的推理?
假如你不使用ARC或垃圾收集,是的,你對對象的內存管理的推理是正確的†。但是,您不想使用stringWithFormat:
。這需要一個格式化字符串,如果你傳遞了一個並非特意的東西,它可能會失敗。你可以使用一個:
stringWithString:
如果你不想擁有
copy
如果你只是想確保你有一個安全的參考字符串(任選autorelease
如果你不」 t計劃保持長期參考)
retain
如果您一定要保留相同的對象 - 即使它是一個可變字符串 - 並且希望擁有所有權(您可能不希望此選項,因爲與主要區別是該字符串可能會發生變異,你的下面)
†通過「正確的」,我的意思是你是對的,你不應該承擔約超出該點對象的生命週期的任何東西。它可能還活着,但從技術上講,這不是一個安全的假設。認爲值得一提,因爲有些人在這一點上並不是100%清楚。