预期标识符或“(”之前的“{”标记

时间:2012-12-27 23:27:15

标签: xcode

不知怎的,我在XCode 4.0.2中遇到了这个错误,不确定是什么问题。

文件:HomeViewController.h

#import <UIKit/UIKit.h>

@interface HomeViewController : UIViewController <UITabBarDelegate>
{

    UIButton *Button1, *Button2, *Button3;
}
@property (nonatomic, retain) IBOutlet UIButton *Button1;
@property (nonatomic, retain) IBOutlet UIButton *Button2;
@property (nonatomic, retain) IBOutlet UIButton *Button3;

.... other member functions...
....
@end

文件:HomeViewController.m

......
#import "RemoteServiceManager.h"

@interface HomeViewController()
{    //This is where the error happens: Expected Identifier or "(" before "{" token 
    RemoteServiceManager* serviceManager;
}
@end

@implementation HomeViewController

@synthesize Button1, Button2, Button3;

.... other member functions
....

@end

看起来它无法识别RemoteServiceManager。无论我在哪里使用serviceManager,它都会说HomeViewController没有名为serviceManager的成员。

是否可能是由XCode版本引起的?我在Mac OS X 10.6.7上使用XCode 4.0.2。

感谢。

3 个答案:

答案 0 :(得分:0)

您无法将实例变量添加到私有类别。

将属性放在那里,并合成它们以获得变量以及内部getter / setter

@interface HomeViewController 

@property (nonatomic, strong) NSString *privateProperty;

@end 


@implementation HomeViewController 

@synthesize privateProperty = _privateProperty;

@end

或者您可以将实例变量添加到类本身。

@implementation HomeViewController
NSString *privateVariable;

@end 

还要记住。如果您在另一个文件中创建一个类别,那么您在该类别正文中声明的任何变量在所有实例中都将是静态的。绝对值得关注的事情。

回顾一下。您可以在主类别的界面中创建变量。或者在主要类别的实施中。

并且私有类别是为您添加原型到您的类,让文件的其余部分知道它们“将会/可用”。

答案 1 :(得分:0)

老pcode无法做到这一点,没有。它确实知道类扩展,因为它附带了较旧版本的LLVM编译器

答案 2 :(得分:0)

您可能找到了答案,但我在这里为遇到同样问题的人发布了答案:

正如Daij所说,问题是由于编译器的版本,所以为了解决这个问题,你需要更改编译器设置:

Build Setting > Build Options > Compiler for C/C++/ObjectiveC
Change value from "LLVM GCC 4.2" to "Apple LLVM compiler 4.2" 

希望它有所帮助。