gpt4 book ai didi

iphone - 我应该如何处理 init : method in Objective-C? 中的故障

转载 作者:太空狗 更新时间:2023-10-30 03:11:31 25 4
gpt4 key购买 nike

假设我正在使用 Objective-C 为 iPhone 构建一个新类。在我的一种初始化方法中,我想手动分配一些内存。所以,我可能有这样的东西:

- (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;
}

现在,假设 calloc() 可能会失败,并且无法分配内存对我的对象来说是灾难性的,我应该在 if 主体中做什么才能正确清理?是否有我应该使用的 Objective-C 习惯用法或模式?

编辑:我包含了 Rob Napier 发布的代码。但是,我仍然必须释放 myObject,对吧?还是添加的代码会以某种方式触发 dealloc()?

最佳答案

是的,你应该释放自己然后返回nil

[self release];
self = nil;

参见 Issues with Initializers在 Objective-C 编程概念指南中。

关于iphone - 我应该如何处理 init : method in Objective-C? 中的故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2016795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com