iphone程序执行流程的几点注意

开发iphone平台运行程序,深刻理解程序执行流程对以后开发非常重要,我仅对我走过的弯路后才认识到的一些东西写出来,希望能给朋友们一些帮助,少走一些弯路:

对于:int reVal = UIApplicationMain(argc, argv, nil, nil)的理解需要注意以下几点:

1>对第四个参数,如果为nil,则会去查找-info.plist文件中的Main nib file base name字段值,然后根据值(一般是MainWindow)去读取nib文件MainWindow.xib.

2>delegate类的指定是在MainWindow.xib中File's Owner指定,点击右键,可以看到Outlets项中,delegates->*AppDelegate.同时也可以在*AppDelegate中点击右键可以看到Referencing Outlets项:delegate->File's Owner。。。

3>因此,如果只改变第四个参数nil为我们自己的代理类,是不行的,需要将上面的关联关系断开。如果删除该项关联,可以发现,程序再出不会执行*AppDelegete.m中执行了,也就是说不会执行*AppDelegete类了。但是我们发现程序仍然能显示window和view控件,这说明,程序在加载MainWindow.xib,仍会加载通过IB生成的控件,但是因为不会执行*AppDelegete类,所以我们没有办法去操作他们了。

4>同时,我们还看到在MainWindow.xib中*AppDelegate还可以看到Outlets项中,window->Window。这是指定该类的window关联到Window控件。只有在*AppDelegate.h中添加@property(nonamatic, retain) IBOutlet UIWindow* window(必须有IBOutlet)之后,才会在MainWindow.xib中*AppDelegate中看到Outlets项:window.因为指定IBOutlet之后,才说明该类有一个变量需要指定的控件来自于IB生成的控件。所以才会生成该Outlets项。

5>因此,如果需要自己写控件,不用IB生成的,有以下几点步骤:首先要删除MainWindow.xib和-info.plist文件中的Main nib file base name字段,同时改变第四个参数nil为我们自己的代理类。同时还要注意clean工程。如果不clean工程,总是会出现一些诡异的结果。我当时吃了很大的亏呀。!


好了,朋友们如果有一些好的心得,希望留言添上哈。。。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值