代码之家  ›  专栏  ›  技术社区  ›  shrads

无法从C函数调用目标C方法

  •  16
  • shrads  · 技术社区  · 17 年前

    我正在为一个GUI应用程序使用MVC架构。model类有一些C函数。其中一个C函数调用了Objective-C类的一些方法。我使用该类的对象调用那些方法。奇怪的是,以前对一个xyz方法的方法被完美地调用,但是当这个xyz方法被调用时,这个方法和它之后的方法都没有被执行。 我没有任何错误。所以不知道到底发生了什么。 有什么办法可以解释这件事的原因吗?

    4 回复  |  直到 17 年前
        1
  •  56
  •   diciu    17 年前

    下面是调用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];
    }
    
        2
  •  1
  •   Marc Charbonneau    17 年前

    您绝对可以从C函数在Obj-C对象上运行方法,因此您的代码可能在某个点上有错误。如果我不得不猜测,当你不期望某个物体是零的时候,它听起来像是零。通常,您可以从在函数中设置断点开始,这样您就可以找出所讨论对象的状态。

        3
  •  1
  •   Peter N Lewis    17 年前

    我同意Marc的观点,“该方法及其未执行后的方法”的经典原因是对象引用为nil,因为[nil doAnything]不会执行任何操作,也不会报告任何错误。

        4
  •  0
  •   NoWall    9 年前

    @implementation
    // Define a object
    ClassName *thisClass;
    

    然后用self初始化

    thisClass = self;
    

    在C-Method中可以使用任何var和方法