Objective-C中的朋友类

时间:2010-02-11 00:46:29

标签: objective-c

有没有办法在Objective-C中创建类似朋友类的东西?

2 个答案:

答案 0 :(得分:30)

首先使用标准类扩展方法声明“私有属性”:

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

然后重新创建类别中的属性:

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

只有导入VisualNotePlayer+Views.h

的人才能访问此界面

答案 1 :(得分:5)

在ObjC中没有朋友类。

要访问另一个类的私有变量,您甚至不需要声明为朋友。例如,您可以使用运行时函数

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

获取the_object->_ivar_name,绕过编译器检查。