创建第一个iPhone应用
现在,我们只是要创建一个简单的单视图的应用程序(一个空白的应用程序),只运行在iOS模拟器。
步骤如下。
1. 打开Xcode和选择创建一个新的Xcode项目。
2. 然后选择单一视图应用
3. 然后输入项目名称,即应用程序的名称,组织名称和公司标识
4. 确保使用自动引用计数的选择,以便自动释放分配的资源,一旦超出范围。单击 Next.
5. 选择项目的目录,并选择create.
6. 你会看到如下的一个屏幕
在屏幕上方你将能够选择支持的方向,建立和释放设置。现场部署有一个目标,我们要支持设备版本,选择4.3这是现在最小允许部署目标。现在这些都不是必需的,让我们把注意力集中在运行的应用程序。
7. 现在选择iPhone模拟器在附近运行按钮的下拉,选择“run”。
8. 已经成功地运行第一个应用程序。会得到一个输出如下
现在让我们来改变背景颜色,只是为了有一个开始界面生成器。选择ViewController.xib。选择“background ”选项,在右侧,改变颜色并运行。
在上述项目中,默认情况下部署目标已设定到 iOS6.0,自动布局将启用。但是,为了确保我们的应用程序运行的设备上运行的iOS 4.3开始,我们已经修改了部署目标在创建这个应用程序的开始,但我们没有禁用自动布局,禁用自动布局,我们需要取消选择“自动布局xib文件的每个 nib,即在 inspector 复选框。 Xcode项目IDE的各个部分是下图中(注:苹果 Xcode4 用户文档)。
文件检查器处于找到检查器选择栏中,如上图所示,自动布局可以是取消选中。当想只针对的iOS6设备,可用于自动布局。此外,将能够使用许多新功能,如果提高到iOS6部署目标。这里使用 iOS4.3 部署目标。
深入挖掘的第一个iOS应用程序的代码
会发现5个不同的文件,将已生成的应用程序,如下。
-
AppDelegate.h
-
AppDelegate.m
-
ViewController.h
-
ViewController.m
-
ViewController.xib
我们使用这些单行注释(/ /)给下面的代码解释简单的代码解释和重要的项目。
AppDelegate.h
// Header File that provides all UI related items. #import <UIKit/UIKit.h> // Forward declaration (Used when class will be defined /imported in future) @class ViewController; // Interface for Appdelegate @interface AppDelegate : UIResponder <UIApplicationDelegate> // Property window @property (strong, nonatomic) UIWindow *window; // Property Viewcontroller @property (strong, nonatomic) ViewController *viewController; //this marks end of interface @end
重要项目代码
-
AppDelegate中继承自UIResponder的处理的iOS事件
-
实现 UIApplication委托的委托方法提供关键的应用程序事件等成品发起,终止等。
-
一个UIWindow对象来管理和协调各方面的意见在iOS设备上屏幕。这就像所有其他加载意见的基础视图。在一般情况下只有一个应用程序的一个窗口。
-
UIViewController 处理画面流畅。
AppDelegate.m
// Imports the class Appdelegate's interface import "AppDelegate.h" // Imports the viewcontroller to be loaded #import "ViewController.h" // Class definition starts here @implementation AppDelegate // Following method intimates us the application launched successfully - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; // Override yiibai for customization after application launch. self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { /* Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.*/ } - (void)applicationDidEnterBackground:(UIApplication *)application { /* Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.*/ } - (void)applicationWillEnterForeground:(UIApplication *)application { /* Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.*/ } - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.*/ } - (void)applicationWillTerminate:(UIApplication *)application { /* Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. */ } @end
重要项目代码
-
这里的UIApplication定义的委托。上述定义的所有方法是用户界面应用程序代表和不包含任何用户定义的方法。
-
UIWindow中分配对象来保存应用程序被分配
-
UIViewController的分配窗口的初始视图控制器。
-
为了使窗口的可见makeKeyAndVisible方法被调用。
ViewController.h
#import// Interface for class ViewController @interface ViewController : UIViewController @end
重要项目代码
-
ViewController 类继承的UIViewController为iOS应用程序提供了基本的视图管理模式。
ViewController.m
#import "ViewController.h" // Category, an extension of ViewController class @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
重要项目代码
-
这里实现的两种方法中所定义的基类 UIViewController
-
在viewDidLoad做初始设置,这被称为视图后装载
-
didReceiveMemoryWarning方法被调用时内存不足的情况下发出警告。