【问题标题】:How do I call a static bool method in main.m如何在 main.m 中调用静态布尔方法
【发布时间】:2010-03-20 05:03:29
【问题描述】:

这是用于 iPhone 的 Xcode 中的 Objective-C。

我在 main.m 中有一个方法:

int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

//I want to call the method here//

int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}

static BOOL do_it_all () {
//code here//
}

如何从 main.m 调用 do_it_all 方法?

【问题讨论】:

    标签: iphone objective-c xcode static boolean


    【解决方案1】:

    你可以正常调用它,只要你在调用它之前已经声明了这个函数。将函数定义移至main() 上方,或在上方添加以下行:

    static BOOL do_it_all ();
    

    个人觉得前者比较容易,但是如果函数之间存在循环依赖,没有函数原型可能无法解决。

    当你在 C/Objective-C/etc 中添加函数原型时。它们经常出现在头文件 (.h) 中,但如果所有内容都在 main.m 中,这可能是矫枉过正。

    【讨论】:

    • 我确实有循环依赖。这些信息非常有帮助。谢谢你。在 main.m 中工作似乎与标准 .h/.m 文件略有不同。
    【解决方案2】:

    像这样:

    do_it_all();
    

    这只是一个普通的 C 函数调用。但是您要么需要将do_it_all 的声明移到main 之前,要么向前声明它;否则,main 不会知道你在说什么。

    【讨论】:

    • 如何转发声明。我以为你只能转发声明一个类。
    • Objective-C 类的前向声明(带有@class)是不同的。在本例中,我们讨论的是函数原型。
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多