[ios學習]—Objective-C基礎學習

來源:互聯網
上載者:User

cocos2d-x學習交流群:140326755

Email : hahayacoder@gmail.com


一 背景

一直對移動開發和手機遊戲開發感興趣,但是一直處於打醬油的狀態,最近也在學習cocos2d-x,然後順便學習下怎麼將程式移植到ios平台上,但是因為對ios開發的環境不熟悉,移植最後以失敗而告終,於是準備在業餘時間投入到學習ios開發和cocos2d-x中。

一開始學習ios開發時,直接去學習可視化介面的開發,發現有些困難,因為連基本的Objective-C文法都不清楚,所以先大概看了下Objective-C文法。

Objective-C是Mac軟體開發領域最主要的開發語言,Objective-C是ANSI版本C語言的超集,支援C基本文法。類的設計和文法主要是基於Smalltalk,最早的物件導向語言之一。

Objective-C中標頭檔以.h結尾,源檔案以.m或.mm結尾,通常是以.m結尾。當你在源檔案中需要包含標頭檔時,你可以使用標準的#include選項,但是Objective-C中提供了更好的方法,使用#import選項。#include選項和#import選項相同,知識#import選項能確保標頭檔只被包含一次,所以在Objective-C中我們最好使用#import選項。


二 基礎文法1 > 方法調用

[object  method] (不帶參數的方法調用 object是對象 method是對象的方法)

[object  method : input] (帶參數的方法調用 input是傳入參數)

output= [object  methodWithOutput] (對象的方法調用可以有傳回值 output就是傳回值)


2 > 字串變數

作為C的超集,Objective-C支援C語言中字串的相關約定:單個字元被單引號包括,字串被雙引號包括。然而在Objective-C中通常不使用C語言風格的字串,因為Objective-C中提供一個更好的處理字串的NSString類。NSString包含你所以預期的優點,包括:儲存任意長度的字串,支援printf風格的格式化工具...

在Objective-C中NSString使用得相當頻繁,Objective-C提供了一個助記符可以方便的從常量建立NSString對象。要使用這個助記符,只需要在普通的雙引號字串前面添加一個@符號。

NSString *myString = @”hahaya”;

3 > id類型

id類型就意味著變數可以指向任意類型的變數,比如下面的myObject對象,可以指向任意類型的變數,id類型是弱類型。

id myObject = [NSString string];

注意 :Objective-C中所有對象都是指標類型的。id類型已經預先被定義成一個指標類型了,所以不需要再加星號。


4 > 嵌套方法調用

在C/C++等語言中嵌套方法、嵌套函數的用法如下,function2的傳回值傳入function1當輸入參數

function1( function2() );

在Objective-C中,嵌套方法、函數、訊息的用法如下,[prefs fromant]的傳回值傳入[NSString stringWithFormant : input]中當輸入參數,和C/C++等語言中類似

[NSString stringWithFormant : [prefs fromant]]

注意:應當盡量避免一行代碼中嵌套調用超過兩個,如果這樣會造成代碼的可讀性下降


5 > 類

和其他物件導向的語言一樣,Objective-C也是使用類來封裝資料的,Objective-C的類規格說明包括兩部分:介面和實現。介面部分包含類的聲明和執行個體變數的定義,以及類的相關方法。而實現部分包括了類方法的實際代碼。下面是一個類聲明樣本


(1)類聲明總是由@interface編譯選項開始,由@end編譯選項結束

(2)類名之後,冒號分割的是父類的名稱

(3)類的執行個體(即成員)變數聲明在大括弧包括的代碼塊內

(4)執行個體變數塊後面就是類方法的聲明列表(當然也可能有屬性)

注意: 雖然前面的類只聲明了方法,但是類可以聲明屬性。


6 > 方法

Objective-C中的類可以聲明兩種類型的方法:執行個體方法和類方法。調用執行個體方法前,必須先建立類的一個執行個體,然後通過類的執行個體來調用執行個體方法。而類方法則是屬於整個類,不需要建立執行個體,通過類來調用。(類似於C++中的成員方法和靜態成員方法的概念)

前面已經講解過無輸入參數和單輸入參數的方法,那麼下面就重點說下多輸入參數的方法。方法聲明包括:方法類型標示符、傳回值、一個或多個方法名、參數類型和參數名,具體見說明


(1)聲明由“-”開始,這是一個方法類型標示符,表明該方法是一個執行個體方法

(2)方法實際的名字是所有方法名的級聯,包括冒號(insertObject : atIndex :)

在標頭檔中我們可以按如下的樣子來定義多輸入參數的方法

- (BOOL) writeToFile : (NSString*)path atomically : (BOOL)useAuxiliaryFile;

其中writeToFile和atomically是方法名,path和useAuxiliaryFile是輸入參數

竟然已經知道了如何聲明、定義一個多輸入參數的方法,那麼我們在使用的時候該如何調用呢?調用方法如下

BOOL result = [myData writeToFile : @”/tmp/log.text” : atomically : NO];

注意:無論什麼時候見到方括弧,都是向一個對象或者一個類發送了訊息


7 > 屬性

屬性是用來代替聲明存取方法(get和set方法)的捷徑。屬性不會在類中建立一個新的執行個體變數(即成員變數),屬性僅僅是定義方法訪問類中執行個體變數(即成員變數)的速記方式而已。暴露執行個體變數(即成員變數)的類可以使用屬性記號來代替get和set方法。

因為屬性可以讓類不寫執行個體變數(即成員變數)的get和set方法,所以屬性可以讓你少寫很多代碼。屬性避免了暴露類中執行個體變數(即成員變數)的get和set方法,取而代之的是用屬性聲明指定你希望的行為,然後在聲明期間合成基於屬性聲明的get和set方法。

屬性聲明放在類介面聲明(即方法聲明)處。基本的屬性聲明使用@property編譯選項,然後後面緊跟類型資訊和屬性名稱字。當然你還可以定製編譯選項來對屬性進行配置,這些編譯選項決定了存取方法的行為。請看下面的例子

@property BOOL flag;

@property (readonly) UIView *rootView; (只能讀,僅建立get方法)

使用屬性的另一個好處就是要在代碼中訪問它們的地方使用點文法,請看下面的例子

myObject.flag = YES;

CGRect viewFrame = myObject.rootView.frame;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.