我在一个私有框架中的函数使用的对象的实现中实现了一个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
答案 0 :(得分:1)
几个选项:
添加'class'变量(文件级静态)以保存请求实例
static MyObject *callbackResponder = nil;
这可能介于.m文件中的#imports和@implementation之间。
答案 1 :(得分:0)
回调的概念是为其创建的块。我会查看块编程指南。它不是C风格的回调,但它有类似的用途。