2009-06-25 2 views
5

私はNSAssertを追加したいので合成されたプロパティをオーバーライドしました。Objectice-Cの合成プロパティをオーバーライドしていますか?

これは問題なく実行できますか(つまり上書きするか)、悪い習慣とは考えられますか?結構です

@synthesize someField; 

-(NSString*)someField { 
    NSAssert(someField != nil,@"someField"); 
    return someField; 
} 

おかげ

答えて

5

documentationから:

あなたは @implementation ブロック内でそれらを提供しない場合、それは セッターを合成および/またはプロパティの 方法をゲッタリングする必要があり、コンパイラに伝える に@synthesizeキーワードを使用します。

これを指定すると、コンパイラは@synthesizeディレクティブに関係なく、あなたのものを使用します。

+0

なぜあなたはしたいですか?現代(64ビットおよびiOS)のランタイムでは、これはイーバールを作成する便利な方法です。 –

+0

私はあなたが暗黙のうちに全く異なる概念であるivarsについて話していると思います。永久保存、データベースアクセス、キャッシングなど、あなた自身のセッターとゲッターを提供する理由はたくさんあります。 –

+0

あなたはそうです、私はここで何か間違っています。私のコメントは意味をなさない。後世に向けて指摘してくれてありがとう。 (真剣に!):) –

関連する問題