2011-08-05 6 views
0

これは新しいコードではありません。 OS 10.7 Lion/LLVM/Clangの前に数千回もコンパイルされ、正常に実行されました。コンパイラで@synthesizeと@dynamicが表示されないのはなぜですか?

@interface CapDuring : NSObject { 
    const char * iFileName; 
... 
} 
@property(assign) const char * iFileName; 
... 
@property(readonly,getter=iFileName) const char * fileName; 

プロパティ「fileNameが」メソッド「iFileName」が定義されている必要が - !使用@synthesize、@dynamicかさえ(この警告はそれのようにすべての宣言のために繰り返される

... 
@end 


@implementation CapDuring 
@synthesize iFileName; 
... 
@end 

メソッドの実装を提供します@dynamicが使用されている場合)。

答えて

0

プロパティであるゲッターを使用するプロパティを別の@interface MyClass(myCompile)に移動することでこのエラーを回避しました。

ゲッター/セッターを介してOSプロパティ/メソッドの名前が変更された場合、同じ問題が発生します。

私は、OSメソッドの名前を変更することを回避しました。

ご協力いただきありがとうございます。別の@interface(カテゴリ)に @property(...)... iInstanceVariable 、その後 @property(...、ゲッター= iInstance)... instanceReference を使用して

3

ここにあなたのラインは@synthesize iFileNameです。それは間違っている。あなたは@synthesize fileNameが欲しいです。メソッドではなくプロパティを合成しています。メソッド自体は、プロパティアクセサを合成するプロセスの一部として生成されます。

2
@property(readonly,getter=iFileName) const char * fileName; 
@synthesize iFileName; 

は、「iFileName」という名前のゲッターをとるfilenameというプロパティがあることを意味します。

は、私はあなたが何をしたいと思い、そのプロパティにはのsynthesizeが本当にありませんが、「FILENAME」としてiFileNameのゲッター名を定義している、それはです:名前のゲッターを作る

@property(readonly,getter=fileName) const char * iFileName; 
@synthesize iFileName; 

プロパティiFileNameのファイル名を合成して

1

は私に問題を与えるようになりました。

最善の解決策は次のとおりです。

@property(...)... instanceReference。@synthesize instanceReference = iInstanceVariable;

これは別のカテゴリ内で間違いなく動作します。

関連する問題