如果我有一个习惯NSObject
名为 ProgramModel 的类,当我时它是否获得 alloc/init -ed@property
and @synthesize
来自另一个班级?
例如,在这样的 ProgramController 类中
// ProgramController.h
#import "ProgramModel.h"
@interface ProgramController : UIViewController {
ProgramModel *programModel;
}
@property (nonatomic, retain) ProgramModel *programModel;
// ProgramController.m
#import "ProgramController.h"
@implementation ProgramController
@synthesize programModel;
// etc
我还需要在中分配/初始化吗initWithNibName
or viewDidLoad
,或者已经是alloc/init
-ed 因为property/synthesize
?
您需要手动填充该属性。例外情况是,如果您有IBOutlet property
您已在 nib 文件中连接;当笔尖加载时,它将自动填充。
我发现对于视图控制器来说,绝大多数属性都是IBOutlets
以及描述视图将显示的内容的属性,后一种情况通常由创建视图控制器的对象设置。对于显示某个对象的详细视图的视图控制器来说,通常就是这种情况。
如果您确实拥有完全位于视图控制器本地的属性,则常见的模式是编写自己的 getter 和 setter(而不是使用@synthesize
) 并在 getter 中创建该对象(如果该对象不存在)。这种延迟加载行为意味着您可以在内存不足的情况下轻松释放资源,并且只需在需要时支付加载对象的成本。
// simple lazy-loading getter
-(MyPropertyClass*)propertyName {
if(propertyIvarName == nil) {
propertyIvarName = [[MyPropertyClass alloc] init];
// ... other setup here
}
return propertyIvarName;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)