gpt4 book ai didi

objective-c - 为什么在构造函数中释放会导致EXC_BAD_ACCESS?

转载 作者:行者123 更新时间:2023-12-03 16:26:37 25 4
gpt4 key购买 nike

我有以下类构造函数

- (id)initForBlurringWithConstantMaskWithID:(int)maskid andSize:(CGSize)s{
self = [super init];
if (self) {
// some code

CGImageRef maskRef = [maskUI CGImage];

//Some code where maskRef is used

CGImageRelease(maskRef); // I won't ever use it again
}

return self;

}

但是,当用ARC释放对象时(对我来说),所有崩溃均与EXC_BAD_ACCESS(code = EXC_i386_GPFLT)一起崩溃,通常在访问“错误”地址时调用。

如果删除发布行,一切正常。无论如何,有人能解释为什么会这样吗?

我的猜测是ARC也在尝试删除maskRef,但找不到它,这会导致崩溃。

最佳答案

创建(CGImageCreate),复制或保留对象时,只需调用CGImageRelase。 [maskUI CGImage]不要求新所有权,因此您不负责释放它。

解:
删除CGImageRelease(maskRef);
看到
https://developer.apple.com/library/mac/documentation/CoreFoundation/Reference/CFTypeRef/index.html#//apple_ref/c/func/CFRelease

关于objective-c - 为什么在构造函数中释放会导致EXC_BAD_ACCESS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433086/

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