考慮到玩家是(非原子,保留)並且使用player = _player合成,以下哪種場景是正確的編碼練習?設置自我後釋放臨時對象是否正確?
方案A
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
self.player = mp;
[mp release];
方案B
MPMoviePlayerController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
self.player = mp;
直到此時我一直在使用場景A作爲一般的做法,但我覺得這可能是導致我的代碼中的內存泄漏。
感謝您的任何幫助。
編輯1:
而且也同樣適用於定時器,它們正在給我真正的麻煩。如果我使用下面的代碼是正確的?如果timerMap也是(nonatomic,retain),並使用timerMap = _timerMap;
self.timerMap = [[NSTimer scheduledTimerWithTimeInterval:fps target:self selector:@selector(updateAnimationTimer) userInfo:nil repeats:YES] autorelease];
而當釋放罰款只是無效,或者應該是無效的,然後釋放?
請參閱[本答案](http:// stackoverflow。com/questions/8576593/objective-c-memory-management-of-instance-members/8576760#8576760)解釋合成和屬性發生了什麼 – 2012-07-23 10:20:34