嘿那里,我是Objective-C的新手,以及一般的编程。我有一点C#和c ++的经验,给你一些背景知识。我正在使用Xcode创建一个简单的应用程序,它添加了两个字段并返回一个总和,我将其缩小为一个错误:
“禁用嵌套函数,使用-fnested-functions重新启用”
以下是我遇到问题的一些代码,我们将非常感谢任何建议:
-(IBAction)click:(id)sender;
{
int main (int argc, const char *argv[]){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int sum;
sum = myInt1, myInt2;
NSLog (name, @", the answer is %i", sum);
[pool drain];
return 0;
}
}
答案 0 :(得分:5)
您在这里尝试做的事情是C语言通常不允许的。通常,您不能在另一个函数内部创建函数,就像在Pascal和JavaScript等语言中一样。你应该从click:
内部删除主要内容并保留行
int sum; sum = myInt1, myInt2; NSLog (name, @", the answer is %i", sum);
但是,更广泛的说明,为什么要尝试在click:
内部创建主要内容?在Objective-C中,您通常只使用main()
来创建任何根级对象并实例化自动释放池。假设你在Mac上使用Xcode,如果你使用其中一个模板开始,它应该为你创建main的所有细节。我建议看看Apple的Cocoa教程,以帮助您了解典型的Objective-C应用程序的结构。
答案 1 :(得分:2)
您已经以某种方式将main()
函数卡在click:
方法中,这没有任何意义。您不能将main()
粘贴到C ++中的类成员函数或C#中的方法中,这是完全相同的。 main()
应该是它自己的函数(Xcode应该提供一个你不需要更改的现成的main.m文件),click:
应该只包含你希望它执行的功能
答案 2 :(得分:1)
-(IBAction)click:(id)sender;
{
int sum;
sum = myInt1, myInt2;
NSLog (name, @", the answer is %i", sum);
}
}
或者,创建一个简单的Foundation Tool项目并将其放入:
int main (int argc, const char *argv[]){
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int sum;
sum = myInt1, myInt2;
NSLog (name, @", the answer is %i", sum);
[pool drain];
return 0;
}
你遇到的问题是你尝试在click方法中声明main函数..它没有任何意义。因此,如果您是初学者,请尝试使用基础工具项目,而不是gui项目。