如何从C函数获取对象的当前实例

时间:2013-04-26 16:18:48

标签: objective-c c runtime

我在一个私有框架中的函数使用的对象的实现中实现了一个C回调,所以我无法控制传递给回调的参数。我想从回调中使用self。感谢。

编辑:

MyObject.h / .M

#import "PrivateFramework.h"
@interface MyObject : NSObject    

-(void) start;  

@end  

void callback(void* arg1, int arg2);  
void callback(void* arg1, int arg2) {  

 /* 
   here I would like to use self (current instance of the object) but
    I can't pass a pointer to the instance in the callback since I don't
    control what is passed to it.
 */



@implementation MyObject

-(void)start {  

    // this function is inside a private framework.
    PrivateFunction(&callback);  
 }
@end

2 个答案:

答案 0 :(得分:1)

几个选项:

  1. 使用单身人士来管理流程
  2. 添加'class'变量(文件级静态)以保存请求实例

    static MyObject *callbackResponder = nil;

  3. 这可能介于.m文件中的#imports和@implementation之间。

答案 1 :(得分:0)

回调的概念是为其创建的块。我会查看块编程指南。它不是C风格的回调,但它有类似的用途。