ios開發之OC基礎-類和對象

來源:互聯網
上載者:User

標籤:

本系列的文章主要來自於個人在學習前鋒教育-歐陽堅老師的iOS開發教程之OC語言教學視頻所做的筆記,邊看視頻,邊記錄課程知識點。建議大家先過一遍視頻,在看視頻的過程中記錄知識點關鍵字,把把握重點,然後再將零散的知識點整理出來。這樣的學習方法會帶來更多的收穫,同時要多做練習,按照思路,默寫、改寫代碼。在這裡,感謝歐陽堅老師,學習你的課程使我走上了ios的開發之路。

一定要明確一個要從事的方向,要不然就會感到迷茫。學習ios開發,並且從事ios開發這個行業,這就是我的選擇。看到我的部落格系列文章,其中大多是關於C++、Qt、Linux網路編程、OpenGL、Unity3D等方面。從表面上看和ios開發似乎沒有多少關聯,但是有了這些方面的學習經驗給我帶了一定的基礎。ios開發主要用oc和swift語言,而oc是從事ios開發的基礎。眾所周知,oc(objective-c)即物件導向的C,在C語言的基礎上增加了物件導向的機制和記憶體管理這一對翅膀,使得OC在做ios開發如虎添翼。

本系列文章僅供個人學習和分享給志同道合的猿友,不存在商業用途。

OC是一門物件導向的語言,既然是物件導向就少補了類和對象。我們知道在C++中物件導向的三大機制:繼承、封裝、多態,這在OC中也同樣具備。下面就具體說一下OC中的類和對象。

類的定義

類是由屬性和方法組成的,屬性工作表示類的特徵,方法表示類的動作。

類的定義格式

OC中的類定義和C++中的類定義有些不同,在OC中類的標頭檔為***.h,而源檔案卻是以.m為尾碼的檔案-***.m。

介面在標頭檔中:

@interface 類名:基類名稱{     //屬性名稱}//這裡不加";"號     //方法聲明@end//聲明結束

類名首字母需要大寫,NSObject是OC所有類的基類,介面中只包含方法的聲明,方法有類方法和執行個體方法。

實現在源檔案中:

@implementation 類名//方法實現@end

類的存取權限

有三種存取權限:@public,@private,@protected。屬性預設的許可權是保護類型,方法預設的許可權是公有類型。

OC中的建構函式以initWith***開頭,主要做一些初始化工作,解構函式為dealloc,如果自己寫類沒有定義,系統會自動提供一個預設的建構函式和解構函式。

舉個例子說明一下,如下代碼:

-(id) init{    self = [super init];    //使用super父類對象,self表示本類對象    if(self){                NSLog(@“在建構函式中name %@ age%d %s”,_name,_age,_FUNCTION_);    }    return self;}-(id)initWithName:(NSString *)newName{    }-(id)initWithName:(NSString*)newName withAge:(int) newAge{}-(void)dealloc{    //解構函式在對象完全消失的時候調用    //對象銷毀時調用,對象計數器=0    //dealloc不要手動調用[person dealloc],應該調用[person release];    //release銷毀對象,release計數器減一,減到0就自動調用dealloc。    [super dealloc];}

在OC中也可以使用"obj->arrt"的形式訪問和設定屬性欄位,但前提是該欄位必須被聲明為公有類型。但是這種方式不建議使用。

#import<Foundation/Foundation.h>@interface Person:NSObject{@public    int _age;    NSString *_name;}-(void) setAge:(int)age;-(int)getAge;@end@implementation Person-(void) setAge (int)age{    _age = age;}-(int)getAge{    return _age;}@endint main(){    @autoreleasepool{        Person *person = [[Person alloc] init];        person->age = 20;        person->name = @”小紅”;    }    return 0;}

Person *person = [[Person alloc] init]就是person指向的對象分配了記憶體空間,並進行了初始化。也可以用Person *person = [Person new],OC中也支援new運算子。因為age、name欄位被聲明為public類型,所以可以使用指標調用的方式來設定對象的屬性。

參數標籤

-(Person *)init:(int) newID:(int) newAge;//沒有使用參數標籤-(Person *)initWithID:(int) newID andAge:(int) newAge;//使用參數標籤

第一個參數可以不帶標籤,從第二個參數開始可以帶標籤。現在的方法名為:initWithID:andAge:,參數標籤可以提高方法名的可讀性,同時還可以用於方法的重載。

方法重載

在OC中,方法的重載不像C++那樣可以通過,參數類型,參數個數進行區分了。OC中不是嚴格的函數重載。

//方法名相同並且參數個數相同但參數類型不同,在OC中構不成方法重載-(int) doSth:(int) x;-(int) doSth:(float) x;-(int) doSth:(int) x:(int) y;-(int) doSth:(float) x:(float) y;//用參數標籤可以構成方法重載-(int) doSth:(int) x:(int) y;-(int) doSth:(float) x andY:(float) y;

ios開發之OC基礎-類和對象

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.