我有一个 Obj-C 对象,里面有一堆方法。有时一个方法需要在同一个对象中调用另一个方法。我似乎无法弄清楚如何让 C 方法调用 Obj-C 方法...
WORKS: Obj-C 方法调用 Obj-C 方法:
[self objCMethod];
WORKS: Obj-C 方法调用 C 方法:
cMethod();
不起作用: C 方法调用 Obj-C 方法:
[self objCMethod]; // <--- this does not work
最后一个例子导致编译器吐出这个错误:
error: 'self' undeclared (first use in this function)
两个问题。为什么 C 函数看不到“self”变量,即使它位于“self”对象内部,如何调用它而不导致错误?非常感谢您的帮助! :)
最佳答案
为了让它工作,你应该像这样定义 C 方法:
void cMethod(id param);
当你调用它时,这样调用它:
cMethod(self);
那么,你就可以写:
[param objcMethod];
在你的 cMethod
中。
这是因为 self
变量是一个自动传递给 Objective-C 方法的特殊参数。由于C方法不享有这个特权,如果你想使用self
你必须自己发送。
在 Method Implementation section of the programming guide 中查看更多信息.
https://stackoverflow.com/questions/1280017/
相关文章:
objective-c - 滚动 NSScrollView 时的回调?
iphone - 在 Objective-C 中随机化 NSArray 的规范方法
iphone - 如何以编程方式区分 iphone 4 和 iphone 4S?
objective-c - NSMutableDictionary 线程安全
objective-c - 如何在没有 Interface Builder 的情况下创建 Cocoa
objective-c - 在 ARC 之后,我应该为调度队列使用什么属性?