亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

OC語言-04-OC語言-核心語法

2019-11-14 18:32:09
字體:
來源:轉載
供稿:網友

一、點語法

1> 基本使用

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

2> 使用注意

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

二、PRoperty和synthesize關鍵字

1> @property

  1. 作用

    ① 自動生成某個成員變量的set方法和get方法
  2. 使用注意

    ① 只能出現在@interface中② 可以使用逗號運算符為多個同類型的成員變量生成setter和getter③ 為了與點語法匹配,使用@property的成員變量不要以下劃線開頭④ @property可以同時完成@synthesize的任務⑤ @property默認生成的成員變量是@private類型的以下劃線開頭

2> @synthesize

  1. 作用

    ① 自動生成某成員變量的setter和getter的實現② 可以指定要訪問的成員變量的名字,通常是以下劃線開頭
  2. 使用注意

    ① 只能出現在@implimentation中② 可以使用都好運算符同時生成多個setter和getter的實現③ 若未指定要訪問的成員變量,默認會訪問生成@synthesize后名字一  樣的成員變量④ 若訪問的成員變量未找到,將會自動生成@private類型的以下劃線  開頭(或與@synthesize后名字一樣的)的成員變量 

三、id類型

1> 基本含義

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

2> 使用注意

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

四、構造方法

1> 作用

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

2> 關于+new方法

  1. +new等價于+alloc方法和-init方法
  2. +alloc方法和-init方法

    ① +alloc方法	1)返回值為id類型	2)為對象分配內存空間,并返回該對象② -init方法	1)返回值為id類型	2)初始化當前對象,并返回初始化好的對象

3> 重寫-init方法的步驟

  1. 調用super的-init方法

    ① 初始化父類中的成員變量和其他屬性② 返回當前對象,并賦值給self③ 根類將isa指針初始化為最初調用init方法的類
  2. 進行子類成員變量的初始化
  3. 返回初始化完畢的對象

4> 自定義-init方法

  1. 適用場合

    ① 當初始化成員變量時,需要將成員變量初始化不同的值,通常需要自定義-init方法,將指定的值作為-init方法的參數
  2. 規范

    ① 一定是對象方法,以-開頭② 返回值一定是id類型③ 方法名一定以init開頭

五、分類(category)

1> 作用

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

2> 定義

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

3> 使用注意

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

六、NSString類

1> NSString *與char *

  1. NSString *

    ① NSString /*指向OC字符串對象的指針② NSString是OC字符串類封裝了字符串相關操作的方法
  2. char *

    ① char /*創建的是指向C語言字符或字符串的指針② char /*只能存儲字符指針或字符串指針,沒有相關操作

2> NSString與NSMutableString

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

3> NSString的方法

  1. NSString的子類必須實現的兩個方法

    ① -length 對象方法,獲取字符串的長度② -characterAtIndex: 對象方法,獲取字符串指定索引位置的字符
  2. 初始化方法

    ① +(NSString*)stringWithString: 類方法,創建一個字符串常量,在  Xcode6.0中已經沒有該方法,用字符串常量直接創建② +(NSString*)stringWithFormat: 類方法,合成一個新的字符串③ -(NSString*)initWithString: 對象方法,在字符串對象初始化時,為其賦值一個字符串常量④ -(NSString*)initWithFormat: 對象方法,在字符串對象初始化時,為其賦值一個新合成的字符串
  3. 讀取文件中字符串的方法

    +(NSString*)stringWithContentsOfFile: encoding: error: 類方法
  4. 獲取網絡中字符串的方法

    +(NSString*)stringWithContentsOfURL: encoding: error: 類方法
  5. 字符串操作的方法

    ① 獲取字符串指定范圍的子串	-(NSString *)substringWithRange: 對象方法,NSRange是結構體	類型,返回子串② 將字符串中指定范圍內的子串替換為指定的字符串	-(NSString *)stringByReplacingCharactersInRange: withString:	對象方法,返回行的字符串③ 求子串在母串中的范圍	-(NSRange)rangeOfString: 對象方法,返回NSRange類型④ 比較兩個字符串內容是否相同	-(BOOL)isEqualToString:(NSString *)aString 對象方法,返回BOOL	類型⑤ 比較兩個字符串的大小	-(NSComparisonResult)compare:(NSString *)aString 對象方法,	返回NSComparisonResult枚舉類型⑥ 用指定的字符串分割字符串	-(NSArray *)componentsSeparatedByString:(NSString *)separator	對象方法,返回NSArray數組類型指針

七、description方法

1> 基本使用

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

2> +description與-description

  1. +description方法

    ① 類方法,默認輸出格式為:類名② 返回值為NSString *類型
  2. -description方法

    ① 對象方法,默認輸出格式為<類名:內存地址>② 返回值為NSString *類型③ 不要在-description方法中用NSLog函數一%@格式輸出self

八、SEL類型

1> 基本使用

  1. 含義

    ① SEL本質上是一個指針類型的數據② 保存的是方法的地址
  2. 作用

    ① 將方法包裝成SEL類型的數據② 每個對應一個唯一的SEL類型數據③ 通過SEL類型的數據可以間接調用類/對象方法

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

  1. 通過方法名間接調用

    ① @selector(方法名),返回一個與參數對應的SEL類型的數據② performSelector:(SEL),通過SEL類型的數據間接的調用類/對象方  法③ performSelector:(SEL) WithObject:(id),通過SEL類型數據調用含  參數的類/對象方法
  2. 通過字符串形式的方法名間接調用

    ① NSSelectorFromString: 將字符串類型的方法名轉換成該方法對應的  SEL類型的數據② NSStringFromSelector: 將SEL類型的數據轉換成字符串類型的方法  名③ 通過轉化得到到SEL類型數據,再間接調用方法

3> _cmd的使用

  • _cmd代表當前方法對應的SEL類型數據
  • 不能在方法中通過_cmd間接調用方法,會引發死循環

九、示例

/* 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;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热这里只有精品6| 亚洲精品日韩激情在线电影| 日韩美女在线观看| 国产精品精品国产| 久久久久亚洲精品| 91精品国产91久久久久福利| 亚洲精品免费网站| 日韩精品视频免费专区在线播放| 欧美小视频在线| 日韩欧美亚洲范冰冰与中字| 2019国产精品自在线拍国产不卡| 91亚洲精品一区| 亚洲美女性视频| 久久久免费观看视频| 日韩av电影在线网| 国产精品三级网站| 亚洲老头老太hd| 亚洲国产日韩欧美在线动漫| 国产精品久久久久久久电影| 亚洲成人激情在线| 大荫蒂欧美视频另类xxxx| 日本在线精品视频| 日本久久久a级免费| 91国产精品电影| 欧美在线性爱视频| 国产精品入口尤物| 亚洲综合一区二区不卡| 在线日韩日本国产亚洲| 亚洲曰本av电影| 日韩有码片在线观看| 亚洲va久久久噜噜噜| 亚洲第一福利在线观看| 亚洲第五色综合网| 欧美日本高清视频| 97免费中文视频在线观看| 国产一区二区三区免费视频| 亚洲毛片一区二区| 日韩电影大全免费观看2023年上| 在线观看中文字幕亚洲| 成人免费看吃奶视频网站| 国产精品免费福利| 欧美性高跟鞋xxxxhd| 国模私拍一区二区三区| 久久九九免费视频| 国内免费久久久久久久久久久| 国产精品直播网红| 国产精品久久久一区| 国产亚洲激情在线| 亚洲国内高清视频| 亚洲国产古装精品网站| www.日韩免费| 成人妇女免费播放久久久| 国产精品r级在线| 另类天堂视频在线观看| 久久免费观看视频| 欧美成人中文字幕在线| 欧美在线性爱视频| 亚洲美女av在线| 久久免费视频网站| 97福利一区二区| 国产在线不卡精品| 国产精品www色诱视频| 亚洲视频在线观看网站| 一区二区三区精品99久久| 欧美一级在线亚洲天堂| 亚洲第一区第二区| 日韩女优在线播放| 国产精品久久久久久久9999| 精品久久久中文| 欧美日韩国产精品一区二区三区四区| 国产黑人绿帽在线第一区| 海角国产乱辈乱精品视频| 国产亚洲精品美女| 中文字幕欧美日韩va免费视频| 欧美乱大交做爰xxxⅹ性3| 欧美日本精品在线| 亚洲欧洲一区二区三区在线观看| 久久亚洲欧美日韩精品专区| 亚洲视频一区二区三区| 98视频在线噜噜噜国产| 欧美成人sm免费视频| 亚洲国产天堂久久综合| 欧美成人h版在线观看| 欧美成人h版在线观看| 欧美午夜www高清视频| 欧美日韩国产第一页| 日韩电影大全免费观看2023年上| 91久久精品日日躁夜夜躁国产| 91国在线精品国内播放| 久久久久成人精品| 欧美一乱一性一交一视频| 日韩欧美精品网址| 国产精品成av人在线视午夜片| 亚洲激情 国产| 国产精品美女呻吟| 青青久久av北条麻妃黑人| 欧美色videos| 成人午夜黄色影院| 欧美日韩免费观看中文| 欧美高清激情视频| 奇米4444一区二区三区| 欧美性xxxx极品hd欧美风情| 91视频九色网站| 亚洲丁香婷深爱综合| 欧美精品在线极品| 国语自产精品视频在线看| 亚洲精品综合久久中文字幕| 亚洲国产精品va在线| 91精品国产91久久久久久| 亚洲免费高清视频| 亚洲国产另类 国产精品国产免费| 九九久久国产精品| 91久久久久久久久久| 97在线视频免费| 久久av中文字幕| 成人网在线免费看| 日本免费在线精品| 国产精品女人久久久久久| 精品精品国产国产自在线| 欧美丰满少妇xxxxx| 成人久久久久爱| 欧美日韩免费看| 91av在线影院| 亚洲曰本av电影| 在线色欧美三级视频| 亚洲国产中文字幕在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 亚洲在线视频福利| 91中文在线观看| 亚洲男人的天堂在线| 在线视频中文亚洲| 中文字幕亚洲激情| 国产精品久久久久久亚洲影视| 欧美另类xxx| 91精品综合视频| 欧美视频在线观看 亚洲欧| 国产美女精品免费电影| 亚洲欧美另类国产| 国产97在线播放| 国产成人中文字幕| 国产精品直播网红| 亚洲a区在线视频| 国产精品国产三级国产专播精品人| 最近2019中文字幕第三页视频| 日韩精品在线免费观看视频| 欧美在线激情网| 欧美视频在线观看免费网址| 日本久久久久久久久久久| 日韩精品福利网站| 美女啪啪无遮挡免费久久网站| 国产免费一区二区三区香蕉精| 亚洲大胆人体av| 日本午夜在线亚洲.国产| 欧美日韩不卡合集视频| 久久久久国产一区二区三区| 国产精品自产拍在线观看中文| 不卡av电影在线观看| 亚洲老司机av| 亚洲a成v人在线观看| 亚洲va欧美va国产综合剧情| 日韩av在线播放资源| 亚洲欧美国产视频| 国产精品永久在线| 97视频在线观看免费高清完整版在线观看|