1

2つの質問:

  1. C関数からCvoid*にobjective-cメッセージを送信することは可能ですか?
  2. <SomeProtocol>C関数宣言でvoid*をヒントにすることは可能ですか?機能本体では?

(擬似コード)

// myfunc.h
void myfunc(void *object, int param);

// myfunc.c
void myfunc(void *object, int param) {
    // desired (pseudocode):
    // [<SomeProtocol>(id)object method:param];
}

// objective-c controller
# include "myfunc.h"
// ....
@implementation

- (void)visible_to_outer_world {
    Object *o = [Object new];
    myfunc(o, 5);
}

// ....
@end
4

1 に答える 1

5

void *C関数からにObjective-Cメッセージを送信することは可能ですか?

なぜそれが必要なのかわかりませんが、Objective-Cとしてコンパイルしている場合:

void bar(void *ptr)
{
    // MRC version:
    [(id)ptr someMessage];

    // ARC (alias "ugly") version:
    [(__bridge id)ptr someMessage];
}

Foo *foo = [[Foo alloc] init];
bar(foo);

C関数宣言でヒントvoid *を与えることは可能ですか?<SomeProtocol>関数本体では?

いいえ。

于 2013-02-04T20:42:59.370 に答える