(原)Android到IOS開發的轉換(一)

序)閒扯幾句  php

  很早就想入手ios開發,可是一直沒有機會,我的沒有水果機器,上個公司上班的那臺mac mini雖然就在我身邊,灰都有一層了,可是一直沒有機會開機學習下,由於事多,自上一篇文章後,離職後,新公司給配備了mac pro,正好知足了本身都心願,開始水果軟件開發。本身也是從0開始,學習它不過就這3-4天而已,可是以前對oc仍是有些瞭解,所以憑着android的感受去作,移動端嘛,不都是佈局上丟組件,我相信也有人若是從android走到ios也會有這樣的思想吧,個人思路是:html

  •   先翻翻ios的結構
  •   佈局一個view,如何佈局而且操縱佈局中的對象
  •   基本的button,listview,gridview等等全部的組建的使用
  •   view跳轉傳值
  •   sqlite操做
  •   網絡操做
  •   本地文件操做
  •   內存管理

  到這裏基原本說就能夠作一些簡單的應用了,最好的方式就是趕忙加入一個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裏面佈局分爲三種:

  1. 代碼:代碼佈局就是否是用xib文件,直接代碼建立button之類的,這個在ios裏面是可行的,由於ios項目組開發中,美工在效果圖的時候,還會給出組建的xy座標位置,而且代碼可複用程度較高。
  2. xib:xib就是前面將的,和android一個activity對應一個佈局xml同樣,一個ios的view對應一個xib,可是不得不說的是ios裏面的拖拉拽比android裏面的窮矮挫舒服多了,效果好不少不少。
  3. Storyboard:這個東西是新生兒,統一了上面兩種方式,它管理的全部view的佈局。

 

五)結尾

  好吧,這兩天後可以使用3種佈局建立一些界面,而後在上面丟一些組件,操做下本地數據庫,網絡下載點東西,以前我一直作服務器,也在andrid下搞xmpp,正好ios下也練手。

  至於對於ios的深刻分析瞭解,還真不是一天兩天能學出來的,能作和懂是兩碼事了,後者最好是和別人學習。

  寫的有些隨意和雜。

相關文章
相關標籤/搜索