在Objective-C类中使用函数指针成员变量

时间:2010-09-27 03:18:56

标签: objective-c class oop des

(Objective-C新手,但精通C / C ++)。

目前我有一个Objective-C类,它的一些成员变量将是函数指针。这些函数指针只能由类本身修改,但可以由其他类使用。

我不确定如何设置对所述函数指针的访问权限。

我目前设想的解决方案是声明所述函数指针@public,据我所知,它允许我使用 - >来调用它们。运营商。这对我来说似乎相当不令人满意,因为函数指针留待干涉,并且它在声音OOP面前飞行。

我的下一个倾向是使用@property,并将它们声明为只读。这似乎更健全。我假设我用点运算符调用它们,因为使用getter获取函数指针然后调用它的想法似乎完全荒谬。

可以使用函数指针作为属性吗?如果是这样,我将如何宣布这些属性:

void (*sort)(SET, int) ;
char *(*toASCII)(CARD) ;

我有一种感觉,我错过了将这些声明为属性的细微差别。

2 个答案:

答案 0 :(得分:1)

我相信你应该能够使用函数指针作为属性。你这样做:

@property (nonatomic, readonly) char *(*toASCII)(CARD);

然后在您的实施中:

@synthesize toASCII;

然后

object.toASCII();

答案 1 :(得分:1)

在@interface中:

@property(readonly) void (*sort)(SET, int);
@property(readonly) char *(*toASCII)(CARD);

在@implementation中:

@synthesize sort, toASCII;

在init方法中(或者你想设置函数指针的任何地方):

sort = someFunction;
toASCII = someFunction;

在iOS的现代版本中,您甚至不需要添加ivar(当您执行@synthesize时它会自动添加)。

相关问题