2011-11-23 34 views
7

Tôi đang cố gắng truy cập các thuộc tính riêng tư trên một lớp được kế thừa. Điều đó có thể xảy ra với quy ước đặt tên của Apple đã cho tôi không?Mục tiêu-C: truy cập các thuộc tính riêng trong lớp thừa kế

Tiêu đề:

#import <Foundation/Foundation.h> 

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

Thực hiện:

#import "FooBar.h" 


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


@implementation FooBar 
@synthesize myPrivateFoo = _myPrivateFoo; 

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

@end 

nếu tôi kế thừa lớp này đến một cái mới tôi không thể truy cập _myPrivateFoo. Có cách nào khác để làm điều đó thay vì khai báo trong tập tin tiêu đề?

Trả lời

16

Khi triển khai lớp con, chỉ cần đặt khai báo danh mục riêng tư trước @interface chính của bạn. Điều này sẽ ngăn chặn các lỗi biên dịch vì trình biên dịch sẽ biết rằng thuộc tính tồn tại. Đây là ý của tôi "tuyên bố danh mục riêng":

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

Ok nó hoạt động. nhưng chỉ với self.myPrivateFoo. ;) Ty! –

+1

Vì nó hoạt động, bạn nên đánh dấu câu trả lời của tôi là chính xác. –

+1

Xin lỗi, tôi mới. –

Các vấn đề liên quan