gpt4 book ai didi

iphone - 圆弧 "It is not safe to remove an unused autorelease message"

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:01 26 4
gpt4 key购买 nike

当转换到 ARC 时,我收到以下编译器错误:“删除未使用的自动释放消息是不安全的”。

如果我简单地删除自动释放消息,obj 将在 getAutoreleasedObj 结束时立即被释放,这将导致 printObj 崩溃。那么如何处理自动释放的对象,并将以下代码转换为 ARC?

- (MyClass *) getAutoreleasedObj {
MyClass *obj = [[MyClass alloc] init];
[obj autorelease];
return obj;
}

- (void) printObj {
NSLog(@"%@", [self getAutoreleasedObj];
}

最佳答案

你不必自动释放它,因为它是从一个函数返回的,ARC 会隐式地让它成为 __autoreleasing 并为你释放它。

这段代码:

-(id) getAutoReleasedObject
{
__autoreleasing MyClass *obj = [MyClass new];
return obj;
}

编译为:

-(id) getAutoReleasedObject 
{
MyClass *obj = [MyClass new];
return [obj autorelease];
}

关于iphone - 圆弧 "It is not safe to remove an unused autorelease message",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9446568/

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