日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

object-c 1

發布時間:2025/3/13 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 object-c 1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多個參數的寫法

(方法的數據類型)函數名:(參數1數據類型)參數1的數值的名字 參數2的名字: (參數2數據類型) 參數2值的名字 …. ;

舉個例子,一個方法的定義:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName;

實現這個函數的時候:

-(void) setKids: (NSString *)myOldestKidName secondKid: (NSString *) mySecondOldestKidName thirdKid: (NSString *) myThirdOldestKidName

{ ?

大兒子 = myOldestKidName; 二兒子 = mySecondOldestKidName; 三兒子 = myThirdOldestKidName;

}

調用的時候:

Kids *myKids = [[Kids alloc] init];

[myKids setKids: @”張大力” secondKid: @”張二力” thirdKid: @”張小力”];

一上內容為引用 ,引用地址tp://blog.163.com/long_wtf/blog/static/185553270201111910536/

剛開始接觸Objective-C的時候,會感覺這種函數聲明和調用都有點怪,實際是受C和C++傳統函數聲明方式的影響,看會C++的函數聲明

void setKids(string *myOldestKidName , string *mySecondOldestKidName , string *myThirdOldestKidName);

調用的時候:

myKids.setKids("張大力","張二力","張小力");

在C++里,以我們的觀點這個函數的”函數名“是setKids,然后()內是參數類型和形參變量

C++中有overload(重載)的概念,我們可以聲明void setKid(int myOldestKidAge , string *mySecondOldestKidName , string *myThirdOldestKidName);

編譯器是如何識別這兩函數呢,實際是對于編譯器會將所有參數的類型加到函數名上,變成setKid_string_string_string 和setKid_int_string_string (這里忽略了this等隱藏參數)

對于編譯器我們的兩個setKid原本就是不同的,重載只是對于我們而言。

對于Objective-C中,許多人認為“Objective-C中參數表是這樣的, 參數名:(數據類型)形參名。第一個參數的參數名就是函數名”,其實這種理解不太正確,對于Objetive-C的函數名應該是由所有參數名的組合的,如上例中函數名是setKid:secondKid:thirdKid: 有使用過@selector的同學,會知道我們使用@selector獲得帶三個參數的函數的sel類型(可以當函數標識符理解)需要這樣用@selector(setKid:secondKid:thirdKid)。

所以我的理解時函數名是setKid:secondKid:thirdKid: ,而setKid實際是第一個參數的參數名。

這有一個問題是Objecitve-C為什么不像C++一樣,直接使用形參的數據類型放到函數名里,而非要讓我們給每一個形參定義一個參數名呢。這是因為重載的方法只在類的內部,在C++中如果讓同一函數在子類父類的不同對象中執行相同函數名有不同的實現,重載是辦不到的,我們需要加vitrual關鍵字,把它聲明成虛函數,這就是多態。在Objetive-C中所有的函數均是具有多態特性的,都可在運行時動態執行調用,我們需要一種方式對于所有的同名函數,在不同的對象可以動態執行,這時候Objetive-C便選擇了中綴表達方式。

轉載于:https://www.cnblogs.com/wuyuankun/p/4370061.html

總結

以上是生活随笔為你收集整理的object-c 1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。