什么是Objective-C等效于main()?

Dan*_*iel 2 objective-c iphone-sdk-3.0

我只是Objective-C的初学者,它的语法只是让我失去理智.

我正在'尝试'在iphone 3.0上工作.

直到知道我已经了解到:

  1. 有.h文件,其中包含每个类的声明; 就像我们在C++中一样,我们可以声明变量/ data_fields的名称,然后在外面定义函数/方法
  2. *函数/方法在.m文件中声明,因此对于每个类,都会有.h文件,.m文件和a.xib文件

那么我们如何调用我们选择的函数/方法呢?

在C,C++,JAVA,C#的旧语言格式中,我们有一个main()函数来完成我们的控制工作,但它在Obj-c中的main()是什么?

我知道有一个main()函数,但我几乎不知道它是如何工作的.

Ara*_*and 10

main函数启动主程序事件循环,通常不要触摸它.

AppDelegate是您想要放置自己的用户代码的地方.如果您生成一个名为Sample的示例iPhone项目,您将生成一个名为SampleAppDelegate的类,它有一个方法- (void)applicationDidFinishLaunching:(UIApplication *)application,它是我认为您正在寻找的入口点.

SampleAppDelegate类从UIApplicationDelegateProtocol实现一个委托(如c#中的接口),一些方法是可选的applicationDidFinishLaunching不是.这通常是您设置第一个视图控制器来执行初始屏幕的地方.

通过消息传递来调用方法.如果我有一个带有方法打印的类Tom,我将初始化并调用该方法

Tom *tom = [[Tom alloc]init];
[tom print];
Run Code Online (Sandbox Code Playgroud)

哦,没有我的方法参数在哪里?没有括号我感到很遗憾.

如果我有一个打印页码并返回void的方法,我可以这样定义它

-(void)printPageNumbers:(int)pageNumber{   
}
Run Code Online (Sandbox Code Playgroud)

并称之为这样

Tom *tom = [[Tom alloc]init];
[tom printPageNumbers:2];
Run Code Online (Sandbox Code Playgroud)

多个参数

-(void)printPageNumbersFrom:(int)fromPageNumber toPageNumber:(int)toPageNumber{
}
Run Code Online (Sandbox Code Playgroud)

并称之为

Tom *tom = [[Tom alloc]init];
[tom printPageNumbersFrom:2 toPageNumber:5];
Run Code Online (Sandbox Code Playgroud)

它不是一种非常类型安全的语言,你可以做一些时髦的东西,比如你有一个Tom对象数组,你可以发送一条消息.如果在运行时发现数组中的对象不是Tom,则会出现异常.

   [[myArray objectAtIndex:0] printPageNumbersFrom:2 toPageNumber:5];
Run Code Online (Sandbox Code Playgroud)

关于上面的一些评论"所以对于每个类都会有一个.h文件.m文件.xib文件" - 这是不正确的.每个班级都有一个'.h'和一个'.m'.

'.xib'是一个视图文件,如果你的类没有ui元素,它将没有'.xib'.称为nib文件的'.xib'不是该类的一部分,它只是引用它.(你把两者联系起来)

我发现学习曲线相当陡峭.如果您有C和一些OO支持,Objective-C不是一种硬语言.然而,将它与ui放在一起可能会有点痛苦.斯坦福大学有一个他们通过iTunes分发的在线课程我已经看过他们所有值得的时间,请看这里

享受曲线,我很高兴我不会坐在你的位置:)