发送Objective-C消息给C void *

时间:2013-02-04 20:40:44

标签: objective-c c

两个问题:

  1. 是否可以从C函数向C void *发送objective-c消息?
  2. 是否可以在C函数声明中使用<SomeProtocol>提示void *?在功能体?
  3. (伪代码)

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

1 个答案:

答案 0 :(得分:5)

  

是否可以从C函数向void *发送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>?在函数体中?

没有