4

古い iPhone アプリを Xcode 3 から Xcode 4 に移行しています。Xcode 3 でビルドされていたコードでこのエラーが発生します。実際、他のモジュールから実装の詳細を隠すために、意図的にこのように記述しました。しかし、Objective-C では何かが変わったようです。このコードはエラーを受け取るようになりました

@interface または @protocol 内で変数を宣言することはできません。

これは、.h ではなく .m ファイルの先頭にあるコードであることを忘れないでください。

@interface VisualViewController ()
BOOL doReloadPhoto;

+ (void)buildVisualEffectInfo;

@property (nonatomic, retain) HandleCheckListSetting *checkListHandler;
@end
4

1 に答える 1

9

これは以前にコンパイルされた可能性がありますが、あなたが思っていることをやっていたとは思いません。クラス拡張でプライベートivarを作成したいようです。ただし、使用している構文は最上位の変数であり、次のものと同等です。

BOOL doReloadPhoto;

@interface VisualViewController ()
// etc.
@end

ivarにするには、中括弧の中に入れる必要があります。

@interface VisualViewController () 
{
    BOOL doReloadPhoto;
}

(逆に、これ(拡張機能のivar)がXcode 3のコンパイラーで可能であったかどうかはわかりません。これが、おそらくあなたが行った方法で行った理由です。)コンパイラーが(賢明に)それを指摘しているようです。あなたが持っているコードはおそらくあなたが期待することをしておらず、あなたにあなたの意図を完全に明確にすることを強いています。

@implementation最近では、同じ構文を使用して、ブロック内でプライベートivarを宣言することも可能になりました。

@implementation VisualViewController
{
    BOOL doReloadPhoto;
}
于 2012-04-28T19:41:07.253 に答える