【问题标题】:New to Objective-c, Hello WorldObjective-c 新手,Hello World
【发布时间】:2011-12-25 20:26:01
【问题描述】:

我刚刚开始学习 Objective-C 编程。我在 iMac 上的 Mac OS X 版本 10.7.2 上使用 Xcode 4.2 进行开发。我正在阅读 Stephen Kochan 的《Programming in Objective-C》一书,其中包含一个简单的“Hello World”示例:

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    NSLog (@"Hello, World!");
    [pool drain];
    return 0;
}

编译时出现很多错误:

/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h:313:19:错误:未知类型名称“NSString”[1]

这样的还有很多。第一次编译之前有什么需要做的吗? Xcode 中的一些设置?

【问题讨论】:

  • 对于我们这些没有那本书的人,您可能想要描述您在该示例中采取的步骤。您是否创建了一个新的命令行项目?这个文件叫 main.m 吗?你记得取消选择自动引用计数吗?

标签: objective-c xcode4.2


【解决方案1】:

我也有这个问题。我发现我选择“命令行”后,在我写项目名称的窗口中选择了“核心基础”而不是“基础”。这就是导致我出错的原因。小心!

【讨论】:

    【解决方案2】:

    从您的代码中,您似乎选择了错误的应用程序项目开始。好像你选择了和c程序有关的东西

    我建议你点击 File -> new project 并选择 Cocoa Application 开始。

    然后你复制你的代码并将它放在你的 appdelegate 文件中的 'didFinishLaunchingWithOptions' 方法中

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog (@"Hello, World!");
        [pool drain];
        return YES;
    
    }
    

    构建并运行程序。您应该能够在控制台日志中看到您的 Hello World..

    【讨论】:

    • 不,你可以用Objective-C写一个命令行工具。 Cocoa Application 模板用于创建带有 GUI 的应用程序。
    • 是的,你可以......而且它不是命令行工具......你绝对可以在控制台日志中看到结果
    • 我不确定你的意思。 hchattaway 正在尝试编写一个命令行程序;您对使用 Cocoa 应用程序模板的建议是让他编写一个 GUI 程序。
    • 因为它看起来像命令行程序的代码;也就是说,它链接到 Foundation,而不是 Cocoa,完全写在 main 函数中,输出到控制台,从不调用 NSApplicationMain
    • 它在哪些方面不像命令行程序? (他甚至没有从 Cocoa 导入任何东西,所以它很可能不是一个 GUI 程序。)
    【解决方案3】:

    Unknown typename NSString 表示您将目标 c 代码传递给(普通)c 编译器

    【讨论】:

    • 我确实将它创建为一个命令行项目......它被称为 main.m
    • 发现了问题...创建项目时,我将“type”保留为“c”。我将其更改为“基础”并且它起作用了。这为 Objective-C 提取了所有正确的头文件,然后才尝试编译为普通的旧 c。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 2012-01-20
    相关资源
    最近更新 更多