为什么即使标记了-fno-objc-arc,ARC 仍禁止在结构体或联合体中使用 Objective-C 对象?
我之前的假设是如果你标记了 -fno-objc-arc,就不会有这个限制。
我之前的假设是如果你标记了 -fno-objc-arc,就不会有这个限制。
typedef struct OFBragDelegateStrings
{
NSString* prepopulatedText;
NSString* originalMessage;
} OFBragDelegateStrings;
我很高兴能担任您的翻译。以下是您需要翻译的内容:
to
typedef struct OFBragDelegateStrings
{
__unsafe_unretained NSString* prepopulatedText;
__unsafe_unretained NSString* originalMessage;
} OFBragDelegateStrings;
与使用struct不同,你可以创建一个Objective-C类来管理数据。
那是因为arc无法跟踪结构体或联合体中的对象(因为它们在此时是普通的C指针)。
即使你使用-fno-objc-arc
标记了相关的文件/类,你仍然可能将由arc控制的对象作为参数传递给它,这很可能会导致内存泄漏。
-fno-objc-arc
混合ARC和非ARC文件,但如果你在任何地方使用普通的C结构体,比如struct或union,就不能使用ARC。 - voidStern$ clang --version Apple LLVM version 10.0.0 (clang-1000.11.45.2)
。
NSArray
内部),那么它不会立即被释放,但我想知道编译器会说什么(现在无法测试)... - Nicolas Miari