开发者

Friend classes in Objective-C

Is there any wa开发者_运维问答y to create something like friend classes in Objective-C?


First declare a "private property" using the standard class extension method:

// 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

Then recreate the properties in a category:

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

This interface is only accessible to those who import VisualNotePlayer+Views.h


There is no such thing as a friend class in ObjC.

And to access a private variable of another class you don't even need to be declared as a friend. For example, you can use the runtime functions

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

to get the_object->_ivar_name, bypassing compiler checks.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜