我是iOS和Objective-C的新手,尽管我花了一段时间努力了解内存管理,但我对自己感到失望,因为我仍然必须全面了解...我的问题是我不了解如何保留对象的属性与保留整个对象有关。让我们以以下代码为例:

@interface TestObject:NSObject {   //TestObject declaration
  NSNumber *firstNumber;
}

@property (nonatomic, retain) NSNumber *firstNumber;

@end

@synthesize firstNumber;

-(void) dealloc  //Use standard synthesized getter and setter, write only custom
                 //dealloc
{
[firstNumber release];
}


...以及使用它的以下代码:

-(IBAction) runClicked: (id) sender
{
TestObject *to1=[[TestObject alloc ] init];
to1.firstNumber=[NSNumber numberWithInt:10];  //retain count 1 on firstnumber
NSNumber *num=[to1.firstNumber retain]; //retain count 2 on firstnumber
[to1 release]; //retain count 1 on firstnumber because of 1 release in dealloc
}


我对代码进行了分析,并使用Leak仪器运行了程序,两者均未发现泄漏。 * number在函数体末尾也被销毁后,firstnumber(在释放主对象后可由num访问)是否没有泄漏,因为该数字将不能由任何指针使用?

非常感谢您的参与!
最好的祝福,
弗洛林。

最佳答案

不,没有泄漏,因为第一个数字是自动释放的对象。

10-08 02:43