4
回答
iPhone 开发入门篇–Hello world
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

原文来自:http://www.jeffkit.info/2010/12/819/

嗯。给大家来个hello world,其实iOS开发入门就是那么一回事。

0、准备开发必须的硬、软件

这就不多讲了,需要安装有Mac os x的苹果电脑,并安装了iPhone SDK,包含了(Xcode、ios sdk,Interface Builder)。

一、创建项目

从Xcode新建一个iphone应用程序项目hello-iphone,选择widnow based application为模板。

Xcode将为我们生成下面的文件:

从左边的Groups & Files看项目的的结构(我省略了其他组):

项目的文件主要由框架(Frameworks)、类源码(Classes)、其他源码(Other Sources)、资源(Resources)及产品(Products)5类元素组成。

1、框架:

iphone应用程序的共用框架有Foundation(最基础的基础框架,定义了NS系列的对象)、UIKit(用户界面工发工具Cocoa Touch)、CoreGraphics(核心图形框架,开发游戏和图形报表必用)。

2、类源码:

主要存放有Object-C的类定义及实现代码,默认提供了一个主程序代理。这里有:

hello_iphoneAppDelegate.h及hello_iphoneAppDelegate.m

3、其他源码:

有主程序代码(main.m)及一个头文件前缀文件。

4、资源

包含了一个主窗口的设计文件(MainWindow.xib)及应用程序的主配置文件(-Info.plist)。

5、产品

一个可运行的二进程序产品。

二、试运行

点击Build and Go按钮即可进行调试,Xcode会调用iPhone模拟器来运行hello-iPhone程序。该模板程序只是创建了一个空白的窗口,运行效果如下:

三、看看代码

我们需要关注的代码文件只有三个:

主程序代码main.m以及主代理类的两个文件(头文件及实现文件)

1、主程序代码(main.m)

主程序很简单,一个传统风格的C语言main函数作为程序入口。

程序做的事情是:

1). 创建一个垃圾自动回收池

2). 调有UIApplicationMain函数

3).释放垃圾自动回收池

毫无疑问,秘密肯定在UIApplicationMain函数里面了。

可以这样理解,UIApplicationMain函数里面做的事情就是把一个应用程序所需要的基础设施打理妥当,如创建主事件循环(用过WFC,wxWindows等客户端编程的同学应该很熟悉了)、监听和派发事件等。

先进去这个函数的定义看看:

前两个参数是接收Main函数传进来的,重点是后两两个参数:
1). principalClassName,指定主程序的类名,如未指定(nil)则尝试使用Info.plist里面指定的,如果还是找不到就使用UIApplication类。
2).delegateClassName,指定主要代理类名(代理类下一节有说明),如果没有指定(nil),则需要在xib/nib文件中指定一个代理类,由于本例中并没有指定代理类名,我们打开MainWindow.xib文件看看,双击该文件,Interface Builder会替你打开它:

这个是预览窗口,显示界面的最终运行结果。

上面这个窗口的内容显示当前编辑的窗口里面的主要角色,File’s Owner是指这个窗口的拥有者,从Type属性可以看到它就是一个UIApplication的类。选中File‘s Owner,看左边的检查器,选中Connections标签:

嗯,可以看到Outlets下面的delegate属性是与Hello_iphone App Delegate关联起来的。

2、主代理程序(hello_iphoneAppDelegate)

1).头文件(hello_iphoneAppDelegate.h):

hello_iphoneAppDelegate类继承于NSObject,实现UIApplicationDelegate协议(即我们熟知的接口),该代理有一个UIWindow的属性window。
UIApplicationDelegate协议定义了一系列作为程序代理需要实现的方法,如applicationDidFinishLaunching会在程序完成加载时被调用,

applicationWillTerminate会在程序被关闭前调用,applicationDidReceiveMemoryWarning会在收到内存过低警告时被调用。但我们在编写代理类时,并不是必须实现协议中定义的全部方法。如本示例中的代理实现中,就只实现了applicationDidFinishLaunching方法。

2).实现文件(hello_iphoneAppDelegate.m):

在applicationDidFinishLaunching函数里面,只是调用了window的makeKeyAndVisible方法,使window成为关键窗口并显示之。实际上,该函数就是可以真正加入我们的逻辑代码的地方。

四、向世界say hi!

如上所述,就从applicationDidFinishLaunching开始吧!

上面是重新实现的applicationDidFinishLaunching方法,在window上面显示一个带阴影效果的hello world文本。运行一下看看效果:

到这里,当然,才是刚刚上路,要真正做iOS应用开发,还有很多需要学习:
# Object-C的各种特性,包括语法及内存管理方面等。
# iPhone应用程序的开发模型(代理模型、MVC神马的)深入探索。
# InterFace Builder的熟练使用。
# 各种常用Framework的使用。

举报
无鸯
发帖于6年前 4回/9K+阅
顶部