ARC禁止在结构或联合中使用Objective-C对象,尽pipe标记了文件-fno-objc-arc

ARC在结构或联合中禁止Objective-C对象,尽pipe标记文件-fno-objc-arc? 这是为什么?

我有一个假设,如果你标记它-fno-objc-arc你没有这个限制。

如果您收到此消息,请尝试__unsafe_unretained。 如果结构中的对象是不存在的,那么只有安全。 例如:如果你在ARC中使用OpenFeint类OFBragDelegateStrings在一个结构体中表示这个错误。

typedef struct OFBragDelegateStrings { NSString* prepopulatedText; NSString* originalMessage; } OFBragDelegateStrings; 

 typedef struct OFBragDelegateStrings { __unsafe_unretained NSString* prepopulatedText; __unsafe_unretained NSString* originalMessage; } OFBragDelegateStrings; 

您可以创build一个Objective-C类来pipe理数据, 不是使用结构

这是因为arc不能跟踪结构或联合中的对象(因为它们就是那个普通的C指针)。

即使您用-fno-objc-arc标记了文件/类,您仍然可能会将由arc控制的对象作为parameter passing给它,这很可能导致内存泄漏。