Pla*_*lov 0 iphone release objective-c alloc ios
我是ObjC和iPhone的新手.
我下载了多个视图之间的数据共享示例.基本方法是在基础UIApplication中创建数据模型对象,并从/向其获取/设置数据.所以在init方法中我看到了以下代码:
- (id) init;
{
self.theAppDataObject = [[ExampleAppDataObject alloc] init];
[theAppDataObject release];
return [super init];
}
Run Code Online (Sandbox Code Playgroud)
然后,使用委托我们可以访问此对象.
id theDelegate = (id) [UIApplication sharedApplication].delegate;
ExampleAppDataObject* theDataObject;
theDataObject = (ExampleAppDataObject*) theDelegate.theAppDataObject;
Run Code Online (Sandbox Code Playgroud)
所以,我的问题出在第一个代码示例中.为什么我们需要为theAppDataObject对象分配内存,然后立即释放对象?为什么我们以后在访问这个对象时会得到nil?
10倍
我假设theAppDataObject被宣布为@property (retain).因此,当通过执行self.theAppDataObject(或[self setTheAppDataObject:])设置对象时,此属性将保留ExampleAppDataObject.因此,您可以在以后发布它.
当您分配并初始化ExampleAppDataObject时,它的保留计数最多为1.当您将AppDataObject设置为此ExampleAppDataObject时,它会向其发送保留,因此保留计数最多为2.您可以释放自己对象的所有权; 它不会被释放,因为AppDataObject仍然拥有所有权.
如果这是有道理的.
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |