本章目标:iphone有一个button 弹出一个对话框,显示一句话 helloword 并且了解一个程序是如何运行起来的 最终效果如下
下面我们来一起做一遍:
第一步:启动Xcode 创建一个名为”HelloWord“新项目:界面模板选择为 single view appliction ,不会创建的同学 去看上一章喔 项目信息填写如下图。填写完成后 选择项目保存位置。
完成后在导航栏区域 xcode已经为我们生成了一系列的 文件, 文件的结构入下图。 后续我们会讲解各目录的作用和含意,先来体验下 ihpone 程序开发的快捷性吧 。呵呵
在导航栏区域 xcode 会为我们生成一个 xib 类型的 文件,它是专门 对应 界面 布局的, 每一个xib 文件 都会 有一个控制器,该xib文件对应了 控制器是 和它同名的.m 。 .h 文件是.m 文件的 接口文件 都是一一对应的 。
第二步 我们打开 xib 文件 如下图 :
选择实用工具栏 中下面栏目中的 round rect button 控件,(默认为label 控件后面那个就是) 你也可以点击 objects 后面的 按钮 来切换不同的控件展示方式。
直接拖动round rect button 控件到 view 框中 或拖到 左侧objects 下面的view 上面 如图:
在此步中,你可以随意拖动 button 的位置 ,来实现你理想的效果, 他不像android中的布局一样,需要考虑多屏幕。
第三步: 选择view中的button 点击改控件的 属性检查器 并设置 button 的title属性 如图:
第四步: 点击 显示助理编辑器 开始建立 button 点击事件 。 按下Ctrl 控制键, 拖动button 到 HelloWordViewController 接口中的 @interface 那行下面和@end结束行的上面 , 拖动正确的情况下 ,在两行之间会有 提示。并弹出一个对话框。 如图:
选择 Connection 的类型为 action 既为动作。 并填写 动作名称 Name 。 这里我们起名为ActionDialog 同样你也可随意起名的
完成这一步骤后,xcode会帮助我们在 HelloWordViewController.m 和 HelloWordViewController.h 生成一组方法。 方法名称就是你刚刚命名的动作名称, .h 类中为接口方法,我们无需操作, 只需要在.m类中 完善 动作方法即可
最后,在 HelloWordViewController.m 类中 的 - (IBAction)ActionDialog:(id)sender 方法中 实现 对话框 代码 , 如下 :
- (IBAction)ActionDialog:(id)sender {
UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"提醒" message:@"helloWord 这是我的第一个ios程序喔,嘻嘻" delegate:self cancelButtonTitle:@"ok" otherButtonTitles:nil, nil];
[alert show];
[alert release];
}
到此搞定, 或许 大家 还是 比较模糊, 其实ios 开发非常简单, 只是和其他语言的开发思想和xcode 的使用上 不熟悉而已,一旦你的思维转变过来, 那就非常容易了, 要记得喔,学习开发,就要多动手喔
下面我们来了解下这个程序是如何运行的
首先
在iPhone的应用程序中,main
函数仅在最小程度上被使用,应用程序运行所需的大多数实际工作由UIApplicationMain
函数来处理。因此,当您在Xcode中开始一个新的应用程序工程时,每个工程模板都会提供一个main
函数的标准实现,该实现和“处理关键的应用程序任务”部分提供的实现是一样的。main
例程只做三件事:创建一个自动释放池,调用UIApplicationMain
函数,以及使用自动释放池。除了少数的例外,您永远不应该改变这个函数的实现。
我们的main 函数位于 /项目/Supporting Files/ 目录下面 的main.m 文件我们无需更改它, 所有的ios 应用程序 都是从它开始启动的。
程序清单的核心代码是UIApplicationMain
函数,它接收四个参数,并将它们用于初始化应用程序。传递给该函数的缺省值并不需要修改,但是它们对于应用程序启动的作用还是值得解释一下。除了传给main
函数的argc
和argv
之外,该函数还需要两个字符串参数,用于标识应用程序的首要类(即应用程序对象所属的类)和应用程序委托类。如果首要类字符串的值为nil
, UIKit就缺省使用UIApplication
类;如果应用程序委托类为nil
,UIKit就会将应用程序主nib文件(针对通过Xcode模板创建的应用程序)中的某个对象假定为应用程序的委托对象。如果您将这些参数设置为非nil
值,则在应用程序启动时,UIApplicationMain
函数会创建一个与传入值相对应的类实例,并将它用于既定的目的。因此,如果您的应用程序使用了UIApplication
类的定制子类(这种做法是不推荐的,但确实是可能的),就需要在第三个参数指定该定制类的类名。
其次
监控应用程序的高级行为是应用程序委托对象的责任,而应用程序委托对象是您提供的定制类实例。委托是一种避免对复杂的UIKit对象(比如缺省的UIApplication
对象)进行子类化的机制。在这种机制下,您可以不进行子类化和方法重载,而是将自己的定制代码放到委托对象中,从而避免对复杂对象进行修改。当您感兴趣的事件发生时,复杂对象会将消息发送给您定制的委托对象。您可以通过这种“挂钩”执行自己的定制代码,实现需要的行为。 该例中的 委托为:HelloWordAppDelegate 类
应用程序启动委托时会加载 主的nib 文件 就是应用程序中需要显示的第一个用户界面。 具体实现在
HelloWordAppDelegate.m 类中的
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中
最后就是 nib 文件了
初始化的另一个任务是装载应用程序的主nib文件。如果应用程序的信息属性列表(Info.plist
)文件中含有NSMainNibFile
键,则作为初始化过程的一个部分,UIApplication
对象会装载该键指定的nib文件。主nib文件是唯一一个自动装载的nib文件,其它的nib文件可以在稍后根据需要进行装载。
Nib文件是基于磁盘的资源文件,用于存储一或多个对象的快照。iPhone应用程序的主nib文件通常包含一个窗口对象和一个应用程 序委托对象,还可能包含一个或多个管理窗口的其它重要对象。装载一个nib文件会使该文件中的对象被重新构造,从而将每个对象的磁盘表示转化为应用程序可 以操作的内存对象。从nib文件中装载的对象和通过编程方式创建的对象之间没有区别。然而,对于用户界面而言,以图形的方式(使用Interface Builder程序)创建与用户界面相关联的对象并将它们存储在nib文件中通常比以编程的方式进行创建更加方便。
呵呵 这一章就到这里了, 各位童鞋,如有疑问或又问题的地方请留言喔 , 欢迎大家拍砖,
本文出自 “android,unity3d” 博客,请务必保留此出处http://mahaile.blog.51cto.com/2891586/1010145