iOS开发记录程序员说iOS大神养成记

程序启动

2015-07-06  本文已影响436人  Ljson

构造方法的返回值类型选择:

UIPickView联动BUG:

在UIPickView快速滚动的时候,[self.pickView selectedRowInComponent:0]返回的行号会快速改变,与此同时,- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component代理方法也会加载对应的要联动的列的数据,但是,这个时候由于前面返回的行号快速改变,导致更新title的时候,行号与实际的行号不一致,可能在取数据的时候,导致数据数组越界;

application启动过程:

  1. 任何程序首先会调用main函数,iOS一样首先会调用main.m文件里面的main函数,int main(int argc, char * argv[])

  2. 在main函数中会调用UIApplicationMain(argc, argv, principalClassName, delegateClassName函数;函数全程
    int UIApplicationMain(int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName);

    • principalClassName: UIApplication或者它的子类的名称,如果传nil,表示 UIApplication;
    • delegateClassName:传入程序代理的的类名

在这个函数中会创建UIApplication对象和AppDelegate对象

  1. 开启主运行循环,监听系统事件
  2. 读取应用程序的info.plist文件,判断是否有main文件(main.storyboard或者其他指定初始化加载的storyboard文件)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法中进行设置

注意点:为什么一定要将控制器设置为window的rootViewcontroller?

因为:只有viewcontroller才能响应一些系统事件,比如屏幕的旋转。如果仅仅将viewcontroller.view添加到window上面,会显示内容,但是不能响应很多事件。

UIWindow

应用程序创建的第一个控件。在AppDelegate中提供了一个UIWindow对象的接口,就是应用程序需要显示的内容的载体,以后要展示的内容最好放在这里

通过xib加载控制器:(以LJViewController为例)

加载方式:[[LJViewController alloc]initWithNibName: bundle:]

上一篇 下一篇

猜你喜欢

热点阅读