我正在将旧的iPhone应用程序从Xcode 3迁移到Xcode 4.我在用于构建Xcode 3的代码上收到此错误 - 实际上我是故意这样写的,以隐藏其他模块的实现细节。但是,Objective-C似乎发生了一些变化。此代码现在收到错误
无法在@interface或@protocol中声明变量。
请记住,这是.m文件顶部的代码而不是.h
@interface VisualViewController ()
BOOL doReloadPhoto;
+ (void)buildVisualEffectInfo;
@property (nonatomic, retain) HandleCheckListSetting *checkListHandler;
@end
答案 0 :(得分:9)
之前可能已编译过,但我不认为它正在做你认为它正在做的事情。听起来你想在类扩展中创建一个私有的ivar。你拥有的语法只是一个顶级变量,相当于:
BOOL doReloadPhoto;
@interface VisualViewController ()
// etc.
@end
你需要把它放在花括号内才能成为一个ivar:
@interface VisualViewController ()
{
BOOL doReloadPhoto;
}
(相反,我不确定这个 - 扩展名为ivar - 是否可以使用Xcode 3的编译器,这可能就是为什么你这样做的原因。)听起来好像编译器现在(理智)指出你所拥有的代码可能没有达到预期的效果,并迫使你完全明确自己的意图。
最近也可以使用相同的语法在@implementation
块中声明私有ivars:
@implementation VisualViewController
{
BOOL doReloadPhoto;
}