Objective c ARC:使用核心基础的Objul-C代码的分析器警告 使用分析器在一些Objul-C COCOA/Core基金会代码中,我得到了一些我无法修复的错误,因为我不理解它们。
错误#1: 在Objective-C类头中,我声明了这个属性Objective c ARC:使用核心基础的Objul-C代码的分析器警告 使用分析器在一些Objul-C COCOA/Core基金会代码中,我得到了一些我无法修复的错误,因为我不理解它们。,objective-c,cocoa,core-foundation,clang-static-analyzer,Objective C,Cocoa,Core Foundation,Clang Static Analyzer,错误#1: 在Objective-C类头中,我声明了这个属性 @property(readwrite) CFMutableSetRef gClients; 在正文中,我得到以下错误: 问题:为什么会泄漏?我把它存放在一个地方,以后再处理。我以为ARC知道如何处理CF“对象” 错误#2: 稍后,我在释放对象时出现以下错误: 问题:如何将这两个Analyzer警告考虑在内,以创建实际工作(self.gClients在调用ClientInitialize和DestroyAllClient之间存在
@property(readwrite) CFMutableSetRef gClients;
在正文中,我得到以下错误:
问题:为什么会泄漏?我把它存放在一个地方,以后再处理。我以为ARC知道如何处理CF“对象”
错误#2:
稍后,我在释放对象时出现以下错误:
问题:如何将这两个Analyzer警告考虑在内,以创建实际工作(self.gClients在调用ClientInitialize和DestroyAllClient之间存在)但未被标记的代码?ARC在没有手动干预的情况下无法管理CF对象。你需要先做一些工作
参见“ARC和免费桥接”。
(\uuu bridge\u transfer)有一些特殊的施法技巧
谢谢你的回复。你建议我怎么做gClients
声明为:@property(readwrite)CFMutableSetRef gClients代码>self.gClients=(保留桥)CFSetCreateMutable(NULL,0,NULL);导致错误。\u bridge\u retained
是类型修饰符,如volatile
或const
。请尝试(\uuuuu桥\uu保留的CFMutableSetRef)
。你读过这篇文章吗?这里的解释非常明确。\u bridge\u retained
与您和@Adrien想要的正好相反。当返回该对象的Create函数已经保留该对象时,它将再次保留该对象。您需要\uuuuuuuu bridge\uu transfer
,它告诉ARC“请帮我处理好这件事,好吗?”。(您链接到的文章中提到了这一点。)