can*_*boy 7 iphone properties objective-c
如果我有一个NSObject名为ProgramModel 的自定义类,当我@property和@synthesize它来自另一个类时它是否会获得alloc/init -ed ?例如,在像这样的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
Run Code Online (Sandbox Code Playgroud)
我是否还需要在initWithNibName或中分配/ init viewDidLoad,或者是否已经alloc/init因为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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3033 次 |
| 最近记录: |