我是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访问)是否没有泄漏,因为该数字将不能由任何指针使用?
非常感谢您的参与!
最好的祝福,
弗洛林。
最佳答案
不,没有泄漏,因为第一个数字是自动释放的对象。