我正在从一个名为 How To Become and Xcoder的便捷免费电子书中学习objc和Xcode,这非常方便。除了它是在2007年用Xcode 3编写的,它的样本都来自那个版本,不幸的是我有OSX Lion和Xcode 4.所以对我的问题的砂砾。它们提供了一个示例代码块,如下所示:
//start
#import <Foundation/Foundation.h
int main (int argc, const char * argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog(@"Hello, World!");
[pool drain];
return 0;
}
//end
所以我的问题是我遇到了20多个错误而Xcode无法识别NSAutoreleasePool或NSLog命令。 有谁知道为什么这不起作用?我已经添加了Foundation框架。 我已经意识到printf命令比NSLog命令更好(据我所知,它更多地用于错误报告)所以是的,任何帮助都会很好。
答案 0 :(得分:1)
如果无法识别NSLog
,则这与Xcode 3与Xcode 4无关。您的代码不包括最基本的Objective-C运行时代码。我认为它被编译为C而不是Objective-C。
您说您必须添加Foundation框架 - 这表示您没有使用基于Objective-C的模板启动项目。当您选择新项目... 时,您选择了哪个模板?任何iOS应用程序模板都应该可以使用,并且大多数Mac OS X应用程序模板都可以运行。如果您选择构建命令行工具,则应选择 Foundation 作为类型。
编辑另外,我应该补充一点,自动释放池的语法在最新版本的Xcode中已经更改,因为默认使用ARC。您可以关闭ARC,或者阅读它以查看差异。有可能你会发现使用ARC更容易,因为你需要担心的内存管理要少得多,但如果你关注的是一本没有考虑到它的书,你就必须牢记这一点。
答案 1 :(得分:1)
基金会位于您需要为项目命名的屏幕上。作为默认值,它设置为C,在您的情况下,您需要单击下拉菜单并选择Foundation。
祝你好运。