我只是Objective-C的初学者,它的语法只是让我无法理解。
我正在尝试'在iphone 3.0上工作。
直到知道我已经了解到:
那么我们如何调用我们选择的函数/方法呢?
在C,C ++,JAVA,C#的旧语言格式中,我们有一个main()函数来完成我们的控制工作,但它在Obj-c中的main()是什么呢?
我知道还有一个main()函数,但我几乎不知道它是如何工作的。
答案 0 :(得分:10)
主函数启动主程序事件循环,通常不要触摸它。
AppDelegate是您想要放置自己的用户代码的地方。如果您生成一个名为Sample的示例iPhone项目,您将生成一个名为SampleAppDelegate的类,它有一个名为- (void)applicationDidFinishLaunching:(UIApplication *)application
的方法,这是我认为您正在寻找的入口点。
SampleAppDelegate类实现了一个委托(就像c#中的接口一样)来自UIApplicationDelegateProtocol的一些方法是可选的applicationDidFinishLaunching不是。这通常是您设置第一个视图控制器以执行初始屏幕的地方。
通过消息传递来调用方法。如果我有一个带有方法打印的Tom类,我将初始化并调用该方法
Tom *tom = [[Tom alloc]init];
[tom print];
哦,没有我的方法参数在哪里?我觉得没有括号就丢了。
如果我有一个打印页码并返回void的方法,我可以将其定义为
-(void)printPageNumbers:(int)pageNumber{
}
并像这样称呼它
Tom *tom = [[Tom alloc]init];
[tom printPageNumbers:2];
多个参数
-(void)printPageNumbersFrom:(int)fromPageNumber toPageNumber:(int)toPageNumber{
}
并将其命名为
Tom *tom = [[Tom alloc]init];
[tom printPageNumbersFrom:2 toPageNumber:5];
它不是一种非常类型安全的语言,你可以做一些时髦的东西,比如你有一个Tom对象数组,你可以发送一条消息。如果在运行时发现数组中的对象不是Tom,则会出现异常。
[[myArray objectAtIndex:0] printPageNumbersFrom:2 toPageNumber:5];
对上面的一些评论“因此每个类都会有一个.h文件.m文件.xib文件” - 这是不正确的。每个班级都有'.h'和'.m'。
'。xib'是一个视图文件,如果你的类没有ui元素,它将没有'.xib'。称为nib文件的'.xib'不是该类的一部分,它只是引用它。 (你把两者联系起来)
我发现学习曲线相当陡峭。如果您有C和一些OO支持,Objective-C不是一种硬语言。然而,将它与ui放在一起可能会有点痛苦。斯坦福大学有一个他们通过iTunes分发的在线课程我已经看过他们值得的所有时间,请参阅here
享受曲线,我很高兴我不会坐在你所在的地方:)
答案 1 :(得分:3)
你真的应该首先通过Apple开发者网站上的介绍性文档。当你是初学者时,有时候在系统性事物中处理事情是非常有帮助的: Learning Objective-C: A Primer 和 Your First iPhone Application
答案 2 :(得分:1)
我认为iPhone开发为其他语言/ API方面的程序员带来了两个挑战:
因此,有经验的程序员总是觉得他们在学习API时错过了一些东西,因为他们期望隐藏的复杂性。