gpt4 book ai didi

objective-c - 我应该如何避免这种内存警告?

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

我有一个返回 CGPath 并生成分析器警告的方法。该方法在协议(protocol)中声明。这是生成警告的示例实现:

"Potential leak of an object allocated on line 47 and stored into 'path'":

- (CGPathRef)createPathForBounds:(CGRect)bounds key:(NSString *)key;
{
if ([key isEqualToString:OvalColumn])
{
CGPathRef path = CGPathCreateWithEllipseInRect(bounds, NULL);
return path;
}

return NULL;
}

这是生成警告的示例用法,“调用者此时不拥有的对象的引用计数不正确减少”

CGPathRef path = [self.delegate createPathForBounds:bounds key:someKey];

// Use the path to do some drawing

CGRelease(path);

我的内存管理是正确的;我从我的协议(protocol)方法传回一个保留的 CGPath 并在调用 block 中释放它,所以我知道可以忽略警告,但我想将它们完全删除。

我是否缺少让分析器满意的命名约定?功能可以在协议(protocol)中定义吗?子类化将如何工作?

最佳答案

- (CGPathRef)newPathForBounds:(CGRect)bounds 键:(NSString *)key

可以找到有关该主题的详细说明 here

或者,您可以选择使用属性 cf_returns_retained,但最好 (imo) 支持命名约定。

关于objective-c - 我应该如何避免这种内存警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7193167/

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