2010-04-02 50 views
-1

我有運行此的方法:Objective-C的存儲器管理

Track* track = [[Track alloc] init:[obj objectForKey:@"PersistentID"] :[obj objectForKey:@"Name"] :[obj objectForKey:@"Artist"] :(NSInteger*)[obj objectForKey:@"Total Time"] :(NSInteger*)[obj objectForKey:@"Play Count"]]; 

[自setCurrentTrack:(音軌*)軌道]; [曲目發佈];

我必須發佈曲目嗎?

+4

在Objective-C'-init :::::'中命名方法被認爲是非常糟糕的做法。您可能想要閱讀開發中心的Apple命名約定。另外,你不能在NSDictionary中存儲一個NSInteger:只有一個NSNumber,它是一個包裝類。投射只是一個可以讓程序崩潰的方法。 – 2010-04-02 21:29:44

回答

2

是的。您有責任在您擁有該物品時釋放對象。無論何時你發送一個分配,新的,複製或保留的消息,你都擁有一個對象。您的currentTrack屬性應該保留該曲目。

0

好吧,你不需要,但如果你不必再使用它,那麼你應該。也沒有必要擁有「:(Track *)曲目」;「我個人比較喜歡

[self setCurrentTrack:track]; 

因爲這是比較常見的做法。

+1

爲什麼有一個錯誤的類型轉換?這不是必需的,但也不是錯誤。 – 2010-04-02 21:34:03

+0

以及我上面展示的東西比較常見 – 2010-04-02 22:26:57