2010-02-11 13 views
18

Objective-C'de arkadaş sınıfları gibi bir şey yaratmanın bir yolu var mı?Objective-C'deki arkadaş sınıfları

// VisualNotePlayer+Views.h 
@interface VisualNotePlayer(Views) 
@property (nonatomic, retain) UIView *currentView; 
@end 

Bu arayüz VisualNotePlayer+Views.h ithal edenlere yalnızca erişilebilir:

// VisualNotePlayer.h 
@interface VisualNotePlayer : NSObject<NotePlayer>{ 
    @private 
    UIView *_currentView; 
} 

// VisualNotePlayer.m 
@interface VisualNotePlayer() 
@property (nonatomic, retain) UIView *currentView; 
@end 

@implementation VisualNotePlayer 
@synthesize currentView=_currentView; 
... 
@end 

Sonra bir kategoride özelliklerini yeniden:

cevap

30

Önce bir "özel mülkiyeti" standart sınıf uzantısı yöntemi kullanılarak beyan

+0

Ah ... Aynı sınıf için birkaç .h dosyasının etkili bir şekilde olması gerekir. –

5

ObjC'de arkadaş sınıfı diye bir şey yoktur.

Başka bir sınıfın özel değişkenine erişmek için arkadaş olarak bildirilmenize bile gerek yoktur. Örneğin, derleyici kontrollerini atlayarak, the_object->_ivar_name almak için çalışma zamanı işlevlerini

id the_private_ivar; 
object_getInstanceVariable(the_object, "_ivar_name", &the_private_ivar); 

kullanabilirsiniz.