由于对于自己的C基础还算满意,花了一个月断断续续的把OC看完了,最近在看一些IOS开发的知识。初次创建一个IOS项目,xCode会自动生成这些文件与目录

从头开始,应用首次执行会先从main函数开始执行。

intmain(intargc,char*argv[]){@autoreleasepool{returnUIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegateclass]));}}

看到源码中UIApplicationMain()方法的注释:

//IfnilisspecifiedforprincipalClassName,thevalueforNSPrincipalClassfromtheInfo.plistisused.Ifthereisno//NSPrincipalClasskeyspecified,theUIApplicationclassisused.Thedelegateclasswillbeinstantiatedusinginit.UIKIT_EXTERNintUIApplicationMain(intargc,char*argv[],NSString*principalClassName,NSString*delegateClassName);

如果第三个参数为nil,则表示从info.plist中读取。大家可以把info.plist理解为Android中的Manifest文件,用于让编译器知道本应用的一些基本信息。

第四个参数是应用的托管类类名,这里大家可以先把托管类理解为一个Activity.class。

在Android中的Application类,通过Application去回调Activity各个生命周期函数。IOS也一样,首先UIApplicationMain()方法根据我们提供的AppDelegate类名称来创建并初始化UIApplication的一个实例,并将AppDelegate作为UIApplication的委托,并调用AppDelegate中各生命周期方法。

就如同Android中Application类中拥有一个包含Activity各生命周期函数的接口一样(具体请查看Application类中的声明:interface ActivityLifecycleCallbacks 这里就不多做解释了)我们通过查看UIApplication类也可以发现一个类似的协议。篇幅有限,这里只列出AppDeletegate类中显式列出的六个方法

@protocolUIApplicationDelegate<NSObject>@optional-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptionsNS_AVAILABLE_IOS(3_0);-(void)applicationDidBecomeActive:(UIApplication*)application;-(void)applicationWillResignActive:(UIApplication*)application;-(void)applicationWillTerminate:(UIApplication*)application;-(void)applicationDidEnterBackground:(UIApplication*)applicationNS_AVAILABLE_IOS(4_0);-(void)applicationWillEnterForeground:(UIApplication*)applicationNS_AVAILABLE_IOS(4_0);

那么这六个方法也就是IOS应用中的六个生命周期方法。具体验证规则也就不多说了,大家自己打个log看看在应用各状态时的回调就行了。其实从名字也就基本可以理解个大概了。参照Activity生命周期几个方法回调的图示,我也自己总结了AppDelegate的几个方法回调图示算是一种笔记吧。

ViewController,这个类我的理解就是用于做一些View定义以及初始化相关的操作。类似于Android中一个Activity的DecorView(如果你要问DecorView是什么。。。就当成是setContentView中传进去的View吧)。

在Android中每一个应用可以有多个Window对象,因为每个Activity都有一个Window,而在IOS中,只有一个Window(至少目前我我的水平只知道一个),那么跳转界面的实现实际上就是切换这个ViewController来实现的。就好像Activity中切换Fragment来实现页面跳转一样。

再接下来讲storyboard,这个实际上就是一个用于拖控件去实现布局的文件。不过与Android中的layout.xml不同,Android中总共有三种方法去创建布局,第一种就是纯拖控件,第二种是手动写xml代码,第三种是手动写java代码,这里我就不多说了。在IOS中只有两种选择,纯拖控件,手动写OC代码。是的,拖控件的那个storyboard文件你不能用代码去编辑它(或者说我还不会编辑它)。所以现在引起了很多争议,有些人说为了维护方便应该提倡用代码布局,有些人说根据发展趋势,更应该去使用拖控件的方式。作为一个从Android转过来的开发者,我建议你去用代码实现,一来与Android中一样,写代码布局能让你更方便的理解控件在界面上的绘制过程,另一方面作为一个新手,多熟悉一下代码也是好事吧。

再往下,有一个IOS3Test文件夹,书本上说是用来写单元测试的,所以目前不需要过多考虑。

再往下,product文件夹,相当于Android中的bin目录,其中用来存放编译后的文件的。

更多相关文章

  1. android应用集
  2. Android组件学习笔记(自定义设计View,以及布局直接引入的快捷方式)
  3. 妙用Fragment轻松实现Android动态权限申请库
  4. android中Bitmap用法(显示,保存,缩放,旋转)实例分析
  5. Android(安卓)ExpandableListView折叠
  6. React Native开发指南
  7. Android对ListView控件增删改查
  8. Android(安卓)开源组件PagerBottomTabStrip 快速构建底部导航栏
  9. 【 Android(安卓)10 系统启动 】系列 -- Launcher(应用门户)

随机推荐

  1. Android中使用WebView, WebChromeClient
  2. Android中Message机制的灵活应用(一)
  3. Android(安卓)下的 bolts tasks
  4. Android之硬件加速
  5. Android(安卓)输入法/ 软键盘 显示模式
  6. Android中Activity启动模式详解
  7. Android之网络连接判断
  8. Android判断ListView滚动到最顶部第0条it
  9. Android日常整理(三)---intent打开浏览器、
  10. Android(安卓)Push