2

どういうわけか、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 を使用しています。

ありがとう。

4

3 に答える 3

0

インスタンス変数をプライベート カテゴリに追加することはできません。

代わりにそこにプロパティを配置し、それらを合成して変数と内部ゲッター/セッターを取得します

@interface HomeViewController 

@property (nonatomic, strong) NSString *privateProperty;

@end 


@implementation HomeViewController 

@synthesize privateProperty = _privateProperty;

@end

または、インスタンス変数をクラス自体に追加できます。

@implementation HomeViewController
NSString *privateVariable;

@end 

も念頭に置いてください。別のファイルでカテゴリを作成する場合、そのカテゴリの本体で宣言する変数はすべてのインスタンスで静的になります。間違いなく注目すべきもの。

要点をまとめると。メインカテゴリのインターフェースで変数を作成できます。またはメインカテゴリの実装で。

プライベート カテゴリは、クラスにプロトタイプを追加して、ファイルの残りの部分に、それらが「利用可能になる/利用可能になる」ことを知らせるためのものです。

于 2012-12-27T23:32:39.167 に答える
0

古いxcodeはこれを行うことができません。古いバージョンの LLVM コンパイラが付属しているため、クラス拡張機能はまだ認識されていません。

于 2012-12-28T00:08:05.127 に答える