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

标签 objective-c c runtime

我在私有(private)框架中的函数使用的对象的实现中实现了一个 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

最佳答案

几个选项:

  1. 使用单例来管理流程
  2. 添加一个“类”变量(文件级静态)来保存请求实例

    static MyObject *callbackResponder = nil;

这可能会在 .m 文件中的 #imports 和 @implementation 之间进行。

关于objective-c - 如何从 C 函数获取对象的当前实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240917/

相关文章:

c# - 如何使用 C# 在运行时请求线程的锁和死锁?

iphone - % 登录字符串 objective-c

objective-c - 核心数据 : Custom Setter Which Does Cascading Calculation Failing

c - 处理指针和结构

c - 为什么用 C 中的 && 对值和条件进行位移后表达式为真

c - 在已经重定向到/dev/null 时重定向守护程序输出

iphone - 如何在 UITableView 中激活下一个 UITextField?

ios - 通过索引获取 NSDictionary 键?

c# - 如何添加 "MS Visual Studio 20xx Tools for Office Runtime"?

c++ - 在Qt Creator与命令行中编译C++项目-生成的.exe不同的运行时