(Objective-C新手,但精通C / C ++)。
目前我有一个Objective-C类,它的一些成员变量将是函数指针。这些函数指针只能由类本身修改,但可以由其他类使用。
我不确定如何设置对所述函数指针的访问权限。
我目前设想的解决方案是声明所述函数指针@public,据我所知,它允许我使用 - >来调用它们。运营商。这对我来说似乎相当不令人满意,因为函数指针留待干涉,并且它在声音OOP面前飞行。
我的下一个倾向是使用@property,并将它们声明为只读。这似乎更健全。我假设我用点运算符调用它们,因为使用getter获取函数指针然后调用它的想法似乎完全荒谬。
可以使用函数指针作为属性吗?如果是这样,我将如何宣布这些属性:
void (*sort)(SET, int) ;
char *(*toASCII)(CARD) ;
我有一种感觉,我错过了将这些声明为属性的细微差别。
答案 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时它会自动添加)。