Objective-C 2.0不常見語法總結(jié)

打印內(nèi)存地址

float x = 32.1;
NSString *string = [NSString stringWithFormat:@"%@", @{@"title":@"xxx", @"num":@(x)}];
NSLog(@"%@,%p", string, string);
  • %p:打印第二個string的內(nèi)存地址

輸出參數(shù)

NSError為例:NSError一般會經(jīng)由方法的“輸出參數(shù)”返回給調(diào)用者。如下代碼所示

- (BOOL)doSomething:(NSError **)error

傳遞給方法的參數(shù)是個指針肉拓,而該指針本身又指向另外一個指針房午,而這另外一個指針指向NSError對象。這樣一來疏日,此方法不僅能有普通的返回值,而且還能經(jīng)由“輸出參數(shù)”把NSError對象回傳給調(diào)用者。用法如下:

  • 使用方法
NSError *error = nil;
BOOL ret = [object doSomething:&error];
if (error) {
    //There was an error
}
  • 內(nèi)部原理
    該方法通過下列代碼把NSError對象傳遞到“輸出參數(shù)”中顷牌。如下圖所示,方框中代表的是當(dāng)前內(nèi)存中的實際數(shù)據(jù)塞淹,非該數(shù)據(jù)所在的內(nèi)存地址窟蓝。
    輸出參數(shù)

    或者可以按下圖理解。error存儲的是一個地址饱普,error是指向NSError類型的指針运挫。
    輸出參數(shù)
- (BOOL)doSomething:(NSError **)error
{
    //Do something that may cause an error
    if (/*therr was an error*/) {
        if (error) {
            //Pass the 'error' through the out-parameter
            *error = [NSError errorWithDomain:domain code:code userInfo:userInfo];
        }
        return NO;
    } else {
        return YES;
    }
}
  • 補(bǔ)充說明
    實際在使用ARC時,編譯器會把方法簽名中的NSError **轉(zhuǎn)換成NSError *__autoreleasing*套耕,即指針?biāo)傅膶ο髸诜椒▓?zhí)行完畢后自動釋放谁帕。

指針的指針

即指針的存儲地址可存放在指針中


指針的指針.png
  • 舉例
    如圖所示
int ival = 1024;
int *pi = &ival;
int **ppi = π

訪問結(jié)構(gòu)體成員

struct AAA {
    int a;
    int b;
}
struct AAA structA;
struct AAA *structB;

//用法
//定義的結(jié)構(gòu)體如果是指針,訪問成員時就用->
//定義的結(jié)構(gòu)體如果是變量冯袍,訪問成員時就用.
//structA.a
//structB->a

size_t

typedef unsigned int size_t //size_t的定義
  • 根據(jù)size_t的字面意思看以看出匈挖,它是用來描述一個數(shù)據(jù)類型所占的內(nèi)存大小的。因此需要保證能夠存的下任何一種數(shù)據(jù)類型康愤。
  • sizeof()的結(jié)果類型

NSString中打印特殊字符#%"等

label.text = [NSString stringWithFormater:@"%d%%",10];//10%
label.text = [NSString stringWithFormater:@"/"%d/"",10];//"10"

未完待續(xù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末儡循,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子征冷,更是在濱河造成了極大的恐慌择膝,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件检激,死亡現(xiàn)場離奇詭異肴捉,居然都是意外死亡踊赠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進(jìn)店門每庆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來筐带,“玉大人,你說我怎么就攤上這事缤灵÷准” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵腮出,是天一觀的道長帖鸦。 經(jīng)常有香客問我,道長胚嘲,這世上最難降的妖魔是什么作儿? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮馋劈,結(jié)果婚禮上攻锰,老公的妹妹穿的比我還像新娘。我一直安慰自己妓雾,他們只是感情好娶吞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著械姻,像睡著了一般妒蛇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楷拳,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天绣夺,我揣著相機(jī)與錄音,去河邊找鬼欢揖。 笑死陶耍,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的浸颓。 我是一名探鬼主播物臂,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼产上!你這毒婦竟也來了棵磷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤晋涣,失蹤者是張志新(化名)和其女友劉穎仪媒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡算吩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年留凭,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偎巢。...
    茶點(diǎn)故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔼夜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出压昼,到底是詐尸還是另有隱情求冷,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布窍霞,位于F島的核電站匠题,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏但金。R本人自食惡果不足惜韭山,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望冷溃。 院中可真熱鬧钱磅,春花似錦、人聲如沸秃诵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菠净。三九已至,卻和暖如春彪杉,著一層夾襖步出監(jiān)牢的瞬間毅往,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工派近, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攀唯,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓渴丸,卻偏偏與公主長得像侯嘀,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谱轨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容