无法从C函数调用Objective C方法

shr*_*ads 15 objective-c

我正在使用MVC架构作为GUI应用程序.模型类有一些C函数.其中一个C函数调用Objective-C类的一些方法.我使用该类的对象来调用这些方法.发生的奇怪事情是先前对xyz方法的方法被完美地调用,但是当调用xyz方法时,该方法及其之后的方法不会被执行.我没有得到任何错误.所以无法弄清楚到底发生了什么.关于这可能是什么原因的任何想法?

dic*_*ciu 56

正如Marc指出的那样,您可能正在使用对在objective-c范围之外未初始化的OBJC对象的引用.

这是一个调用ObjC对象方法的C代码的工作示例:

#import <Cocoa/Cocoa.h>

id refToSelf;

@interface SomeClass: NSObject
@end

@implementation SomeClass
- (void) doNothing
{
        NSLog(@"Doing nothing");
}
@end

int otherCfunction()
{
        [refToSelf doNothing];
}


int main()
{

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

    SomeClass * t = [[SomeClass alloc] init];
    refToSelf = t;

    otherCfunction();

    [pool release];
}
Run Code Online (Sandbox Code Playgroud)

  • 伙计,你摇滚.我浪费了一个美好的一天,你的代码只是挽救了一个糟糕的一天.我希望我能再投100票. (2认同)

Mar*_*eau 1

您绝对可以从 C 函数对 Obj-C 对象运行方法,因此您的代码中有时可能会出现错误。如果我不得不猜测,当你不希望某个对象为零时,它听起来就像是零。通常,您首先会在函数中设置断点,这样您就可以找出相关对象的状态。