IOS Empty Application ,纯代码创建的视图应用程序

37 篇文章 1 订阅
19 篇文章 0 订阅

我用的XCode 版本是5


创建个ios工程,选Empty Application


创建成功后,Xcode会自动生成必要的代码。我看到这些代码时,立刻联想到了 .net 的WinFrom工程的代码,很相似。 


UIApplicationMain

打开  main.m文件

#import <UIKit/UIKit.h>
#import "AppDelegate.h" //AppDelegate的名字可以更改,我使用的是默认的。

int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    }
}
看到了我们再熟悉不过的main函数了。Object-C承袭了C的这个main入口函数特性。当我们启动ios用程序时,运行时将准备工作做好后,就执行main函数。

上面的代码中,除去@autoreleasepool指令,main函数体只有一行代码。

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
这行代码还直接return了,那么可以推断UIApplicationMain函数里面执行了某种“死循环”,才能让应用程序运行到这行代码不会立刻结束。这种“死循环”和windows的消息循环是类似的。

注意UIApplicationMain函数的第4个参数,NSStringFromClass([AppDelegate class]),是个字符串值,也就是你完全可以用@“AppDelegate”常量字符串代替它

return UIApplicationMain(argc, argv, nil, @"AppDelegate" );
UIApplicationMain会使用反射创建AppDelegate类的实例。

更多的关于"UIApplicationMain介绍"


委托类AppDelegate


打开AppDelegate类的声明文件

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;

@end
AppDelegate继承自UIResponder,遵从UIApplicationDelegate协议。UIApplicationMain便是通过UIApplicationDelegate协议和AppDelegate通信。

AppDelegate有个类型为UIWindow*成员的window。


打开AppDelegate类的实现文件,里面有UIApplicationDelegate协议的默认实现。

其中,didFinishLaunchingWithOptions实现里面

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}

可以看到,AppDelegate实例的window成员这里进行初始化。一般的,window窗口应该是ios应用程序的第一个窗口视图。

代码中,window的背景颜色是白色 [UIColor whiteColor] ,makeKeyAndVisible是让这个窗口可见,并显示到屏幕上。


执行流程示意


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值