我有一個NSDate *那我存儲爲與保留關鍵字屬性:爲什麼我需要保留NSDateFormatter dateFromString結果:
@property (nonatomic, retain) NSDate* startTime;
我用它如下:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"h:mm a"];
startTime = (NSDate*)[[NSUserDefaults] standardUserDefaults] objectForKey:@"StartTimeKey"];
if (startTime == nil)
startTime = [[dateFormatter dateFromString:@"8:00 am"] retain];
爲什麼我需要保留dateFromString:
消息的結果,但我不需要保留objectForKey:
的結果?
我剛剛升級到XCode 4.2,現在我正在使用LLVM GCC 4.2編譯器。升級之前,代碼工作正常,沒有保留。現在它在沒有保留消息的情況下崩潰(稍後在代碼中訪問startDate屬性時)。
按規則,你不應該保留它,因爲dateFromString會自動釋放,但startTime屬性應保留在賦值,因爲它歸因於保留 – bryanmac
順便說一句,看起來像dataFormatter泄漏(如果你不使用ARC)。 –
@DavidDunham - 我認爲這是standardUserDefaults objectForKey:泄漏。 – LandedGently