iOS 面試基礎(chǔ)知識

1.可變與不可變數(shù)組的關(guān)鍵字修飾

@property(nonatomic,strong) NSArray *array1;

@property(nonatomic,copy) NSArray *array2;

@property(nonatomic,strong) NSMutableArray *array3;

@property(nonatomic,copy) NSMutableArray *array4;

1,array 使用strong修飾不可變數(shù)組時,這時外部使用可變數(shù)組賦值時,會改變它的值會出現(xiàn)一些不必要的麻煩(當傳入的array是可變對象且發(fā)生改變時玲昧,會導致屬性跟著改變造成數(shù)據(jù)錯亂殖属,如果可以確定傳入的數(shù)據(jù)是不可變的,可以用strong齐唆。).所以NSArray最好用copy去修飾,可變數(shù)組賦值給不可變數(shù)組,本質(zhì)上只是把數(shù)組的元素傳過去,并沒有發(fā)生大家所說的深copy的實現(xiàn),因為本質(zhì)上數(shù)組的內(nèi)存的地址沒有變.

2, NSMutableArray用copy的話,會copy成NSArray 而不是NSMutableArray,傳入一個array后,查元素會crash,所以最好用strong去修飾

2.NSString為什么要用copy關(guān)鍵字律秃,如果用strong會有什么問題爬橡?

一般情況下,不可變對象(NSString棒动,NSArray糙申,NSDictionary等)使用copy修飾,可變對象(NSMutableString船惨,NSMutabeArray柜裸,NSMutableDictionary等)使用strong修飾;

不可變對象可以接受子類對象粱锐,也就是說NSString可以接受NSMutableString疙挺,如果使用strong修飾,當傳入的string是可變對象且發(fā)生改變時怜浅,會導致屬性跟著改變造成數(shù)據(jù)錯亂铐然,如果可以確定傳入的數(shù)據(jù)是不可變的,可以用strong恶座。

注意搀暑,可變對象一定要用strong修飾,因為使用copy修飾后對象是不可變的奥裸,如果這時對可變對象進行修改會導致崩潰.

3.block相關(guān)

block的本質(zhì)是一個指針結(jié)構(gòu)體,

可能存放在3個地方:代碼區(qū)(全局區(qū))险掀、堆區(qū)、棧區(qū)(ARC情況下回自動拷貝到堆區(qū)湾宙、因此ARC下只有兩個地方:代碼區(qū)和堆區(qū))樟氢。如果不是ARC則存放在棧區(qū),所在函數(shù)執(zhí)行完畢就回釋放侠鳄,想再外面調(diào)用需要用copy指向它埠啃,這樣就拷貝到了堆區(qū),strong屬性不會拷貝伟恶、會造成野指針錯區(qū)碴开。

Block結(jié)構(gòu)體內(nèi)部的isa指針是指向_NSContreteStackBlock的,其實這只是其中的一種,分別還有_NSContreteGlobalBlock 和 _NSContreteMallocBlock,block根據(jù)在內(nèi)存中的位置分為三種:NSGlobalBlock潦牛,NSStackBlock眶掌,NSMallocBlock。block中沒有用到局部變量會初始化為NSConcreateGlobalBlock巴碗,如果用到局部變量朴爬,在MRC中會初始化為NSConcreateStackBlock,ARC中會初始化為NSConcreateMallocBlock橡淆。block作為屬性時使用copy修飾以保證MRC下將block拷貝到堆中召噩,ARC下不使用copy修飾也會自動拷貝到堆中

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逸爵,隨后出現(xiàn)的幾起案子具滴,更是在濱河造成了極大的恐慌,老刑警劉巖师倔,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件构韵,死亡現(xiàn)場離奇詭異,居然都是意外死亡溯革,警方通過查閱死者的電腦和手機贞绳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來致稀,“玉大人冈闭,你說我怎么就攤上這事《兜ィ” “怎么了萎攒?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矛绘。 經(jīng)常有香客問我耍休,道長,這世上最難降的妖魔是什么货矮? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任羊精,我火速辦了婚禮,結(jié)果婚禮上囚玫,老公的妹妹穿的比我還像新娘喧锦。我一直安慰自己,他們只是感情好抓督,可當我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布燃少。 她就那樣靜靜地躺著,像睡著了一般铃在。 火紅的嫁衣襯著肌膚如雪阵具。 梳的紋絲不亂的頭發(fā)上碍遍,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天,我揣著相機與錄音阳液,去河邊找鬼怕敬。 笑死,一個胖子當著我的面吹牛帘皿,可吹牛的內(nèi)容都是我干的赖捌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼矮烹,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罩锐?” 一聲冷哼從身側(cè)響起奉狈,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涩惑,沒想到半個月后仁期,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡竭恬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年跛蛋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痊硕。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡赊级,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出岔绸,到底是詐尸還是另有隱情理逊,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布盒揉,位于F島的核電站晋被,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏刚盈。R本人自食惡果不足惜羡洛,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藕漱。 院中可真熱鬧欲侮,春花似錦、人聲如沸谴分。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牺蹄。三九已至忘伞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氓奈。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工翘魄, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舀奶。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓暑竟,卻偏偏與公主長得像,于是被迫代替她去往敵國和親育勺。 傳聞我的和親對象是個殘疾皇子但荤,可洞房花燭夜當晚...
    茶點故事閱讀 45,055評論 2 355

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