1

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

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

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

我目前设想的解决方案是声明所述函数指针@public,据我了解,这将允许我使用 -> 运算符调用它们。这对我来说似乎相当不满意,因为函数指针对干预是开放的,而且它在健全的 OOP 面前飞行。

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

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

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

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

4

2 回答 2

1

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

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

然后在您的实施中:

@synthesize toASCII;

然后

object.toASCII();
于 2010-09-27T03:23:26.000 回答
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 时自动为您添加)。

于 2010-09-27T03:23:53.330 回答