1. ホーム
  2. iphone

[解決済み] ARCは、-fn-objc-arcをマークしても、構造体や共用体に含まれるObjective-Cオブジェクトを禁じています。

2023-05-11 20:17:11

質問

ARCでは、-fn-objc-arcと記述しているにもかかわらず、構造体やユニオンの中にObjective-Cのオブジェクトを入れることを禁止しているのですか? なぜそうなのでしょうか?

私は、-fno-objc-arcとマークすれば、この制限はないものと思っていました。

どのように解決するのですか?

このメッセージが表示されたら、__unsafe_unretainedを試してみてください。構造体内のオブジェクトがunretainedである場合のみ安全です。 例 OpenFeintをARCで使用する場合、クラスOFBragDelegateStringsは、構造体の中でこのようなエラーになります。

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

から

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