成員變量名;對象與指針 這里沿用上篇objective-c面向?qū)ο笾惡蛯ο螅ㄉ希┑拇a。 在 FKPersonTest.m中,有這樣的代碼: FKPerson* person = [[FKPe...">

重囗另类BBWSeⅹHD,av狼论坛,精品一卡2卡三卡4卡乱码理论,体育生gv老师浪小辉3p警察

IOS 開發(fā)學(xué)習(xí)總結(jié) objectivec面向?qū)ο笾惡蛯ο螅ㄏ拢?-電腦資料

電腦資料 時間:2019-01-01 我要投稿
【www.ipr-jzsc.com - 電腦資料】

    知識點安插:如果訪問權(quán)限允許,objective-c 允許直接通過對象來訪問成員變量,

<code class="hljs" bjectivec="">#import<foundation foundation.h="">@interface FKDog : NSObject// 定義一個jump方法- (void) jump;// 定義一個run方法,run方法需要借助jump方法- (void) run;@end</foundation></code>

    實現(xiàn)文件:FKDog.m

<code class="hljs" bjectivec="">#import FKDog.h@implementation FKDog// 實現(xiàn)一個jump方法- (void) jump{    NSLog(@正在執(zhí)行jump方法);}// 實現(xiàn)一個run方法,run方法需要借助jump方法- (void) run{//  FKDog* d = [[FKDog alloc] init];//  [d jump];    [self jump];    NSLog(@正在執(zhí)行run方法);}@end</code>

    FKDogTest.m文件:

<code class="hljs" java="">#import<foundation foundation.h="">#import FKDog.hint main(int argc , char * argv[]) {    @autoreleasepool{        // 創(chuàng)建Dog對象        FKDog* dog = [[FKDog alloc] init];        // 調(diào)用Dog對象的run方法        [dog run];    }}</foundation></code>

用self區(qū)分重名的局部變量和成員變量

    局部變量和成員變量重名的情況下,局部變量會隱藏成員變量,

電腦資料

http://www.ipr-jzsc.com)。為了在方法中強行引用成員變量,可以使用 self 關(guān)鍵字進(jìn)行區(qū)分。

    示例代碼:

    FKWolf.h文件

<code class="hljs" bjectivec="">#import<foundation foundation.h="">@interface FKWolf : NSObject{    NSString* _name;    int _age;}// 定義一個setName:ageAge方法- (void) setName: (NSString*) _name andAge: (int) _age;// 定義一個info方法- (void) info;@end</foundation></code>

    FKWolf.m 文件

<code class="hljs" bjectivec="">#import FKWolf.h@implementation FKWolf// 定義一個setName:ageAge方法- (void) setName: (NSString*) _name andAge: (int) _age{    // 當(dāng)局部變量隱藏成員變量時,    // 可用self代表調(diào)用該方法的對象,這樣即可為調(diào)用該方法的成員變量賦值了。    self->_name = _name;    self->_age = _age;}// 定義一個info方法- (void) info{    NSLog(@我的名字是%@, 年齡是%d歲 , _name , _age);}@endint main(int argc , char * argv[]) {    @autoreleasepool{        FKWolf* w = [[FKWolf alloc] init];        [w setName: @灰太狼 andAge:8];        [w info];    }}</code>

把 self 當(dāng)成普通方法的返回值

    當(dāng) self 作為對象的默認(rèn)引用使用時,程序可以像訪問普通指針變量一樣訪問這個 self引用,甚至可以把 self 當(dāng)成普通方法的返回值。

    示例程序:

    ReturnSel.m文件

<code class="hljs" bjectivec="">#import<foundation foundation.h="">@interface ReturnSelf : NSObject{    @public    int _age;}- (ReturnSelf*) grow;@end@implementation ReturnSelf- (ReturnSelf*) grow{    _age++;    // return self,返回調(diào)用該方法的對象    return self;}@endint main(int argc , char * argv[]){    @autoreleasepool{        ReturnSelf* rt = [[ReturnSelf alloc] init];        //可以連續(xù)調(diào)用同一個方法        [[[rt grow] grow] grow];        NSLog(@rt的_age成員變量的值是:%d , rt->_age);    }}</foundation></code>

    說明:使用 self 作為方法的返回值可以使代碼更加簡潔,但可能造成實際意義的模糊。

id 類型

    id 類型可以代表所有對象的類型。任意類的對象都可賦值給 id 類型的變量。

    通過 id 類型的變量來調(diào)用方法時,objective-c 將會執(zhí)行動態(tài)綁定。動態(tài)綁定:objective-c 將會跟蹤對象所屬的類,會在運行時判斷該對象所屬的類,并在運行時確定需要動態(tài)調(diào)用的方法,而不是在編譯時確定要調(diào)用的方法。

    示例程序:

<code class="hljs" bjectivec="">#import<foundation foundation.h="">#import FKPerson.hint main(int argc , char * argv[]) {    @autoreleasepool{        // 定義id類型的變量,并將FKPerson對象賦給該變量        id p = [[FKPerson alloc] init];        // 使用p變量來調(diào)用say:方法。        // 程序?qū)⒃谶\行時執(zhí)行動態(tài)綁定,因此實際執(zhí)行FKPerson對象的say:方法        [p say: @你好,瘋狂iOS講義];    }}</foundation></code>

最新文章
主站蜘蛛池模板: 武安市| 城市| 新营市| 青海省| 大宁县| 平阴县| 勃利县| 额敏县| 平陆县| 开原市| 乌兰浩特市| 济南市| 尚志市| 平遥县| 申扎县| 开阳县| 桂林市| 昌都县| 伊川县| 克东县| 高碑店市| 宝清县| 巩留县| 黄梅县| 安达市| 玉溪市| 临清市| 保山市| 阜新市| 九江县| 宣武区| 色达县| 广饶县| 栾城县| 施秉县| 建宁县| 怀柔区| 烟台市| 册亨县| 沛县| 留坝县|