为什么在Objective-C中我不能在方法a()中调用方法b(),其中a和b在一个接口中

时间:2012-12-11 07:16:37

标签: objective-c

实际上我建立并编译我的项目没有问题一个月的年龄,但今天我打开我的项目并继续修改一些东西,我发现有一个问题,我不知道为什么!

看起来像这样。

我有一个类(viewController.h / viewController.m)

在viewController.h中,我声明了两个方法

-(void) a;

-(void) b;

在viewController.m中,我实现了它们

-(void) a
{... b()\\invoke method b; ...}

-(void) b
{...\\do something}

但是当我构建项目时,会发生错误:

  

架构i386的未定义符号:“_ b”,引自:          - ViewController.o中的[ViewController a]        (也许你的意思是:dyld_stub_binding_helper)ld:找不到架构i386 clang的符号:错误:链接器命令失败   退出代码1(使用-v查看调用)

我该如何解决?

2 个答案:

答案 0 :(得分:1)

您正在尝试调用方法b,就好像它是一个C函数,而不是Objective-C方法。正确的方法是:

- (void)a
{
    [self b];    // Call method b
}

答案 1 :(得分:1)

使用C函数:

viewController.h:

void a();
void b();

viewController.m:

void a() {
    b();
}
void b() {
    // do something
}

或者,您可以使用Objective-C方法:

viewController.h:

- (void)a;
- (void)b;

viewController.m:

- (void)a {
    [self b];
}
- (void)b {
    // do something
}