Rob*_*nes 24 iphone objective-c cocoa-design-patterns
假设我正在为Objective-C中的iPhone构建一个新类.在我的一个init方法中,我想手动分配一些内存.所以,我可能有这样的事情:
- (id)initWithSomeObject:(SomeObject *)someObject {
self = [super init];
if (self != nil) {
myObject = someObject;
[myObject retain];
if ( (memory = calloc(1, sizeof(SomeStruct)) == NULL) {
// What should I do here to clean up
[self release];
self = nil;
}
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
现在,假设calloc()可能失败,并且无法分配内存对我的对象来说是灾难性的,我应该在if-body内做什么来正确清理?是否存在我应该使用的Objective-C习语或模式?
编辑:我收录了Rob Napier发布的代码.但是,我还是要释放myObject,对吧?或者添加的代码是否以某种方式触发dealloc()?
Rob*_*ier 26
是的,你应该释放自己,然后返回nil.
[self release];
self = nil;
Run Code Online (Sandbox Code Playgroud)
请参阅Objective-C编程指南中的概念中的初始化器问题.
| 归档时间: |
|
| 查看次数: |
3428 次 |
| 最近记录: |