序)闲扯几句 php
很早就想入手ios开发,可是一直没有机会,我的没有水果机器,上个公司上班的那台mac mini虽然就在我身边,灰都有一层了,可是一直没有机会开机学习下,由于事多,自上一篇文章后,离职后,新公司给配备了mac pro,正好知足了本身都心愿,开始水果软件开发。本身也是从0开始,学习它不过就这3-4天而已,可是以前对oc仍是有些了解,所以凭着android的感受去作,移动端嘛,不都是布局上丢组件,我相信也有人若是从android走到ios也会有这样的思想吧,个人思路是:html
到这里基原本说就能够作一些简单的应用了,最好的方式就是赶忙加入一个ios项目组,接下来的东西就是深刻了,对于有android的开发经验来讲,走到ios开发去不是很难,可能难的地方是对oc的理解,我也不得不说oc的语法对于用惯了java/c+的人来讲确实很奇葩,就像作php的热忽然看见erlang同样。java
准备)oc基础,从面向对象起步android
关于oc的语法http://www.cnblogs.com/lm3515/archive/2010/12/20/1911135.html这个朋友总结的很好,看完这个基本就能开始了。ios
一)HelloWorldc++
任何语言都是从它起步,不解释,当我拿到水果机的第一件事是干吗?打开xcode赶忙建立一个ios的helloworld。sql
看到上面的目录结构,相信作过cocos的朋友看起来是否是有点熟悉?其实它的运行流程都和cocos差很少。数据库
ios里面文件的后缀:xcode
.h:和c同样,头文件服务器
.m:message的缩写,也就是oc对h文件对实现
.mm:若是咱们的一个文件里面即有c++代码,也有oc代码,就将它命名为.mm后缀,编译器会分别处理oc和c+代码。
.xib:之前叫nib,nib是直接编译成二进制,xib是xml文件,也就是布局文件,就是android里面的layout_xxx.xml。项目里面由一个LunachScreen的xib文件,它就是ios在刚刚启动的时候显示的东西,若是你的应用启动快,它就是一闪而过,启动慢可能会显示久点,至关于loading。
二)流程
ios的入口函数是main.m文件,里面
一个项目项目结构图如上所示,看到这个结构,咱们很关心它的流程是怎样,ios里面它的入口是main.m文件,在main里面声明了代理类的运行:
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
这里咱们看到由main启动了appdelegate这个代理类,在这个代理类里面咱们能够设置ios默认启动哪一个试图做为第一个显示试图,以下所示:
#import "AppDelegate.h" #import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { _window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; ViewController *friendController=[[ViewController alloc]init]; UINavigationController *navigationController=[[UINavigationController alloc]initWithRootViewController:friendController]; _window.rootViewController=navigationController;
[_window makeKeyAndVisible]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { } - (void)applicationDidEnterBackground:(UIApplication *)application { } - (void)applicationWillEnterForeground:(UIApplication *)application { } - (void)applicationDidBecomeActive:(UIApplication *)application { } - (void)applicationWillTerminate:(UIApplication *)application { } @end
在这里咱们设置了默认显示的第一个视图为:ViewController,而且咱们设置了一个东西:
_window.rootViewController=navigationController;
这个咱们能够理解为android的Context,有了这个咱们就能够全局控制管理view,最开始我没有设置这个,因此view页面跳转总是跳转不过去,而且官方也推荐使用这种方式而不是直接在view中跳转。
三)view
如今咱们来到了ViewController,它就是android中的activity,activity继承至Activity,而ios中它继承UIViewController,所以在这里就能够操做这个页面的视图,而View的跳转也就是咱们android里面activity的跳转。
它的跳转方式以下:
LoginViewController *ickImageViewController = [[LoginViewController alloc] init]; [self.navigationController pushViewController: ickImageViewController animated:true];
就是push和pop view的方式,经过咱们前面定义的根view。
四)布局
ios的布局可比android舒服多了,由于屏幕少啊,再多也没android多吧,在ios里面布局分为三种:
五)结尾
好吧,这两天后可以使用3种布局建立一些界面,而后在上面丢一些组件,操做下本地数据库,网络下载点东西,以前我一直作服务器,也在andrid下搞xmpp,正好ios下也练手。
至于对于ios的深刻分析了解,还真不是一天两天能学出来的,能作和懂是两码事了,后者最好是和别人学习。
写的有些随意和杂。