Objective-C内存管理:我必须释放吗?
我有一个方法可以运行以下命令:Objective-C内存管理:我必须释放吗?,objective-c,memory-management,Objective C,Memory Management,我有一个方法可以运行以下命令: Track* track = [[Track alloc] init:[obj objectForKey:@"PersistentID"] :[obj objectForKey:@"Name"] :[obj objectForKey:@"Artist"] :(NSInteger*)[obj objectForKey:@"Total Time"] :(NSInteger*)[obj objectForKey:@"Play Count"]]; [self setCur
Track* track = [[Track alloc] init:[obj objectForKey:@"PersistentID"] :[obj objectForKey:@"Name"] :[obj objectForKey:@"Artist"] :(NSInteger*)[obj objectForKey:@"Total Time"] :(NSInteger*)[obj objectForKey:@"Play Count"]];
[self setCurrentTrack:(Track*) track];
[track release];
我必须释放曲目吗?好吧,你不必释放,但如果你不必再使用它,那么你应该释放。而且也没有必要有“:(Track*)Track];“我个人更喜欢
[self setCurrentTrack:track];
因为这是一种更普遍的做法。是的。您有责任在拥有对象的任何时候释放该对象。无论何时向对象发送alloc、new、copy或retain消息,您都拥有该对象。您的currentTrack属性应该保留该轨迹。在Objective-C
-init:。您可能想在开发中心阅读苹果的命名约定。此外,您不能在NSDictionary中存储NSInteger:只能存储NSNumber,这是一个包装类。强制转换只是一种肯定会使程序崩溃的方法。为什么强制转换是一个bug?这不是必须的,但也不是错误。