OC,oc語言

來源:互聯網
上載者:User

OC,oc語言

一、點文法

1> 基本使用

  • 點文法本質上是set方法/get方法的調用

2> 使用注意

  • 若出現在賦值操作符的右邊,在執行時會轉換成get方法
  • 若出現在賦值操作符的左邊,在執行時會轉換成set方法
  • 不能在set、get方法中用self使用點文法,會造成死迴圈

二、property和synthesize關鍵字

1> @property

2> @synthesize

三、id類型

1> 基本含義

  • 萬能指標,可以指向任何OC對象
  • 可以理解為NSObject *

2> 使用注意

  • id在定義變數時不要加上符號*,其本身已經包含

四、構造方法

1> 作用

  • 用來初始化對象,返回一個初始化好的對象

2> 關於+new方法

3> 重寫-init方法的步驟

4> 自訂-init方法

五、分類(category)

1> 作用

  • 在不改變原來類的基礎上為類擴充一些方法
  • 通常作用與大型的類,將類的不同類型的方法,寫在不同的分類中

2> 定義

  • 分類的定義與類的定義相似,在類名後面用小括弧指明分類的名字
  • 分類通常以模組命名

3> 使用注意

  • 分類只能為類擴充方法,不能擴充成員變數
  • 分類方法的實現中可以訪問原來類中的成員變數
  • 在分類中實現原來類的方法,會造成原來類中方法的實現失效
  • 調用方法時,優先在分類中尋找,然後在原來類中尋找,最後才在父類中尋找
  • 在原來類的多個分類尋找方法時,優先在最後編譯的分類中尋找

六、NSString類

1> NSString *與char *

2> NSString與NSMutableString

  • NSString建立的字串對象是不可改變的,NSMutableString建立的字串對象是可改變的

3> NSString的方法

七、description方法

1> 基本使用

  • ,會調用相應的description方法
  • 可以重寫description方法,使其能夠通過類/對象名輸出期望的資訊

2> +description與-description

八、SEL類型

1> 基本使用

2> 通過SEL類型間接調用方法的方式

九、樣本

/* 1.建立一個Person類,屬性:name; 2.自訂init方法,在初始化是制定每個Person對象的name 3.為Person類添加一個包含運動方法的分類,名字為Sports 4.重寫-description方法,使其輸出Person對象時,輸出該對象的name屬性 5.通過SEL間接調用方法 */#import <Foundation/Foundation.h>/*****定義Person類*****/@interface Person : NSObject//用@propert聲明成員變數,且省略@synthesize@property NSString *name;/*自訂構造方法,在Person對象被初始化時給成員變數name賦予制定的值*/- (id)initWithName:(NSString *)name;//判斷兩個人的名字是否相同- (void)isSameName:(Person *)p;@end/***Person類的實現***/@implementation Person- (NSString *)description{    return self.name;}- (id)initWithName:(NSString *)name{    self.name = name;    return self;}- (void)isSameName:(Person *)p{    /*調用NSString的對象方法isEqualToString    判斷兩個人的名字是否相同*/    if ([self.name isEqualToString:p.name])    {        NSLog(@"\n這兩個人的名字都為:%@", self);    }    //通過重寫的description方法通過對象名輸出該對象的屬性    NSLog(@"\n這兩個人的名字分別為:%@\t%@", self, p);}@end/****為Person類增加一個分類****/@interface Person (Sports)//為Person類添加打乒乓球這個方法- (void)playTableTennis;//為Person類添加打籃球這個方法- (void)playBasketball;@end/**Person的分類Sports的實現**/@implementation Person (Sports)- (void)playTableTennis{    NSLog(@"\n%@正在打乒乓球", self);}- (void)playBasketball{    NSLog(@"\n%@正在打籃球", self);}@end/*****測試函數main*****/int main(){    @autoreleasepool {        //定義兩個字串,用於存放兩個名字        NSString *str = @"Tom";        NSString *str2 = @"Jack";        //定義兩個Person對象,並調用重寫的構造方法        Person *p = [[Person alloc] initWithName:str];        Person *p2 = [[Person alloc] initWithName:str2];        //通過方法名間接調用方法        [p performSelector:@selector(isSameName:) withObject:p2];        //通過字串形式的方法名間接調用方法        [p performSelector:NSSelectorFromString(@"playBasketball")];        }    return 0;}

 

相關文章

聯繫我們

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