2011-11-23 8 views
7

継承されたクラスのプライベートプロパティにアクセスしようとしています。それはリンゴを与えたその命名規則で可能ですか?Objective-C:継承されたクラスのプライベートプロパティにアクセス

ヘッダー:

#import <Foundation/Foundation.h> 

@interface FooBar : NSObject 
-(void)doSomeThingWithThisNumber:(NSInteger)aNumber; 
@end 

実装:

#import "FooBar.h" 


@interface FooBar() 
@property NSInteger myPrivateFoo; 
@end 


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

-(void)doSomeThingWithThisNumber:(NSInteger)aNumber 
{ 
    _myPrivateFoo = aNumber; 
} 

@end 

私は_myPrivateFooにアクセスすることはできません新しいものにこのクラスを継承している場合。ヘッダファイルの宣言の代わりにそれを行う別の方法はありますか?

答えて

16

サブクラスの実装では、メインの@interfaceの前にプライベートカテゴリ宣言を入れるだけです。コンパイラはプロパティが存在することを知るため、コンパイルエラーを防止します。これは私が「私的カテゴリ宣言」を意味するものです:

@interface FooBar() 
@property NSInteger myPrivateFoo; 
@end 
+0

いいですね。 self.myPrivateFooでのみ使用できます。 ;)Ty! –

+1

動作しているので、自分の答えを正しいものとしてマークする必要があります。 –

+1

申し訳ありません、新しいです。 –