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


序)閑扯幾句  

  很早就想入手ios開發,但是一直沒有機會,個人沒有水果機器,上個公司上班的那台mac mini雖然就在我身邊,灰都有一層了,但是一直沒有機會開機學習下,因為事多,自上一篇文章后,離職后,新公司給配備了mac pro,正好滿足了自己都心願,開始水果軟件開發。自己也是從0開始,學習它不過就這3-4天而已,但是之前對oc還是有些了解,因此憑着android的感覺去做,移動端嘛,不都是布局上丟組件,我相信也有人如果從android走到ios也會有這樣的思想吧,我的思路是:

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

  到這里基本來說就可以做一些簡單的應用了,最好的方式就是趕緊加入一個ios項目組,接下來的東西就是深入了,對於有android的開發經驗來說,走到ios開發去不是很難,可能難的地方是對oc的理解,我也不得不說oc的語法對於用慣了java/c+的人來說確實很奇葩,就像做php的熱突然看見erlang一樣。

 

准備)oc基礎,從面向對象起步

  關於oc的語法http://www.cnblogs.com/lm3515/archive/2010/12/20/1911135.html這個朋友總結的很好,看完這個基本就能開始了。

    

一)HelloWorld

  任何語言都是從它起步,不解釋,當我拿到水果機的第一件事是干嘛?打開xcode趕緊創建一個ios的helloworld。

看到上面的目錄結構,相信做過cocos的朋友看起來是不是有點熟悉?其實它的運行流程都和cocos差不多。

ios里面文件的后綴:

  .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的深入分析了解,還真不是一天兩天能學出來的,能做和懂是兩碼事了,后者最好是和別人學習。

  寫的有些隨意和雜。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM