iOS面試題(三)

1、Objective-C 中創(chuàng)建線程的方法是什么楔壤?如果在主線程中執(zhí)行代碼鹤啡,方法是什么?如果想延時(shí)執(zhí)行代碼蹲嚣、方法又是什么递瑰?

線程創(chuàng)建有三種方法:使用NSThread創(chuàng)建、使用GCD的dispatch隙畜、使用子類(lèi)化的NSOperation,然后將其加入NSOperationQueue;在主線程執(zhí)行代碼抖部,方法是performSelectorOnMainThread,如果想延時(shí)執(zhí)行代碼可以用performSelector:onThread:withObject:waitUntilDone:

2议惰、為什么我們常見(jiàn)的delegate屬性都用是weak而不是retain/strong慎颗?

是為了防止delegate兩端產(chǎn)生不必要的循環(huán)引用。
@property (nonatomic, weak) id<UITableViewDelegate> delegate;

3言询、什么時(shí)候用delete俯萎,什么時(shí)候用Notification?

Delegate(委托模式):1對(duì)1的反向消息通知功能运杭。
Notification(通知模式):只想要把消息發(fā)送出去夫啊,告知某些狀態(tài)的變化。但是并不關(guān)心誰(shuí)想要知道這個(gè)辆憔。

4撇眯、你是否接觸過(guò)OC中的反射機(jī)制?簡(jiǎn)單聊一下概念和使用

1). class反射

  • 通過(guò)類(lèi)名的字符串形式實(shí)例化對(duì)象虱咧。
Class class = NSClassFromString(@"student"); 
Student *stu = [[class alloc] init];
  • 將類(lèi)名變?yōu)樽址?/li>
Class class =[Student class];
NSString *className = NSStringFromClass(class);

2). SEL的反射

  • 通過(guò)方法的字符串形式實(shí)例化方法熊榛。
SEL selector = NSSelectorFromString(@"setName");  
[stu performSelector:selector withObject:@"Mike"];
  • 將方法變成字符串
NSStringFromSelector(@selector*(setName:));

5、isa指針問(wèn)題

isa:是一個(gè)Class 類(lèi)型的指針. 每個(gè)實(shí)例對(duì)象有個(gè)isa的指針,他指向?qū)ο蟮念?lèi),而Class里也有個(gè)isa的指針, 指向meteClass(元類(lèi))彤钟。元類(lèi)保存了類(lèi)方法的列表来候。當(dāng)類(lèi)方法被調(diào) 用時(shí),先會(huì)從本身查找類(lèi)方法的實(shí)現(xiàn),如果沒(méi)有,元類(lèi)會(huì)向他父類(lèi)查找該方法跷叉。同時(shí)注意的是:元類(lèi)(meteClass)也是類(lèi),它也是對(duì)象逸雹。元類(lèi)也有isa指針,它的isa指針最終指向的是一個(gè)根元類(lèi)(root meteClass)营搅。根元類(lèi)的isa指針指向本身,這樣形成了一個(gè)封閉的內(nèi)循環(huán)。

6梆砸、如何訪問(wèn)并修改一個(gè)類(lèi)的私有屬性转质?

1). 一種是通過(guò)KVC獲取。
2). 通過(guò)runtime訪問(wèn)并修改私有屬性帖世。

7休蟹、一個(gè)objc對(duì)象的isa的指針指向什么?有什么作用日矫?

指向他的類(lèi)對(duì)象,從而可以找到對(duì)象上的方法赂弓。

8、怎么用 copy 關(guān)鍵字哪轿?

用途:

  1. NSString盈魁、NSArray、NSDictionary 等等經(jīng)常使用copy關(guān)鍵字窃诉,是因?yàn)樗麄冇袑?duì)應(yīng)的可變類(lèi)型:NSMutableString杨耙、NSMutableArray、NSMutableDictionary飘痛;
  2. block 也經(jīng)常使用 copy 關(guān)鍵字珊膜。
    說(shuō)明:
    block 使用 copy 是從 MRC 遺留下來(lái)的“傳統(tǒng)”,在 MRC 中,方法內(nèi)部的 block 是在棧區(qū)的,使用 copy 可以把它放到堆區(qū).在 ARC 中寫(xiě)不寫(xiě)都行:對(duì)于 block 使用 copy 還是 strong 效果是一樣的,但寫(xiě)上 copy 也無(wú)傷大雅宣脉,還能時(shí)刻提醒我們:編譯器自動(dòng)對(duì) block 進(jìn)行了 copy 操作车柠。如果不寫(xiě) copy ,該類(lèi)的調(diào)用者有可能會(huì)忘記或者根本不知道“編譯器會(huì)自動(dòng)對(duì) block 進(jìn)行了 copy 操作”脖旱,他們有可能會(huì)在調(diào)用之前自行拷貝屬性值堪遂。這種操作多余而低效。

9萌庆、用@property聲明的 NSString / NSArray / NSDictionary 經(jīng)常使用 copy 關(guān)鍵字溶褪,為什么?如果改用strong關(guān)鍵字践险,可能造成什么問(wèn)題猿妈?

用 @property 聲明 NSString、NSArray巍虫、NSDictionary 經(jīng)常使用 copy 關(guān)鍵字彭则,是因?yàn)樗麄冇袑?duì)應(yīng)的可變類(lèi)型:NSMutableString、NSMutableArray占遥、NSMutableDictionary俯抖,他們之間可能進(jìn)行賦值操作(就是把可變的賦值給不可變的),為確保對(duì)象中的字符串值不會(huì)無(wú)意間變動(dòng)瓦胎,應(yīng)該在設(shè)置新屬性值時(shí)拷貝一份芬萍。

  1. 因?yàn)楦割?lèi)指針可以指向子類(lèi)對(duì)象,使用 copy 的目的是為了讓本對(duì)象的屬性不受外界影響,使用 copy 無(wú)論給我傳入是一個(gè)可變對(duì)象還是不可對(duì)象,我本身持有的就是一個(gè)不可變的副本尤揣。
  2. 如果我們使用是 strong ,那么這個(gè)屬性就有可能指向一個(gè)可變對(duì)象,如果這個(gè)可變對(duì)象在外部被修改了,那么會(huì)影響該屬性。
    //總結(jié):使用copy的目的是柬祠,防止把可變類(lèi)型的對(duì)象賦值給不可變類(lèi)型的對(duì)象時(shí)北戏,可變類(lèi)型對(duì)象的值發(fā)送變化會(huì)無(wú)意間篡改不可變類(lèi)型對(duì)象原來(lái)的值。

10漫蛔、這個(gè)寫(xiě)法會(huì)出什么問(wèn)題:@property (nonatomic, copy) NSMutableArray *arr;

問(wèn)題:添加,刪除,修改數(shù)組內(nèi)的元素的時(shí)候,程序會(huì)因?yàn)檎也坏綄?duì)應(yīng)的方法而崩潰嗜愈。
//如:-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x7fcd1bc30460
// copy后返回的是不可變對(duì)象(即 arr 是 NSArray 類(lèi)型,NSArray 類(lèi)型對(duì)象不能調(diào)用 NSMutableArray 類(lèi)型對(duì)象的方法)
原因:是因?yàn)?copy 就是復(fù)制一個(gè)不可變 NSArray 的對(duì)象莽龟,不能對(duì) NSArray 對(duì)象進(jìn)行添加/修改蠕嫁。

答案都是收集而來(lái),如果有什么錯(cuò)誤毯盈,歡迎指正拌阴!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市奶镶,隨后出現(xiàn)的幾起案子迟赃,更是在濱河造成了極大的恐慌,老刑警劉巖厂镇,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纤壁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡捺信,警方通過(guò)查閱死者的電腦和手機(jī)酌媒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迄靠,“玉大人秒咨,你說(shuō)我怎么就攤上這事≌浦浚” “怎么了雨席?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吠式。 經(jīng)常有香客問(wèn)我陡厘,道長(zhǎng),這世上最難降的妖魔是什么特占? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任糙置,我火速辦了婚禮,結(jié)果婚禮上是目,老公的妹妹穿的比我還像新娘谤饭。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布揉抵。 她就那樣靜靜地躺著宜岛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪功舀。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,985評(píng)論 1 291
  • 那天身弊,我揣著相機(jī)與錄音辟汰,去河邊找鬼。 笑死阱佛,一個(gè)胖子當(dāng)著我的面吹牛帖汞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凑术,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼翩蘸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了淮逊?” 一聲冷哼從身側(cè)響起催首,我...
    開(kāi)封第一講書(shū)人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泄鹏,沒(méi)想到半個(gè)月后郎任,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡备籽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年舶治,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片车猬。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霉猛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出珠闰,到底是詐尸還是另有隱情惜浅,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布伏嗜,位于F島的核電站赡矢,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏阅仔。R本人自食惡果不足惜吹散,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望八酒。 院中可真熱鬧空民,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至浊猾,卻和暖如春抖甘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背葫慎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工衔彻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人偷办。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓艰额,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親椒涯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子柄沮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,093評(píng)論 1 32
  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,340評(píng)論 8 265
  • 在這二十幾年的時(shí)間中,有過(guò)為成長(zhǎng)落淚的瞬間废岂,有過(guò)為學(xué)業(yè)拼命的夜晚祖搓,有過(guò)為友情掛牽的幸福,也有過(guò)為愛(ài)情感傷的纏綿湖苞。 ...
    仁簫閱讀 520評(píng)論 0 1
  • 最近在公司做了我們的pc端網(wǎng)站棕硫。需求:實(shí)現(xiàn)網(wǎng)頁(yè)的下拉加載頁(yè)面思路: 中包含list,這是一個(gè)list中包含的元素塊...
    薛云龍閱讀 8,519評(píng)論 4 4
  • 夢(mèng)想再大也不覺(jué)大,追想的人再小也不嫌小袒啼,做個(gè)勇敢的蝸牛哈扮,夢(mèng)想總有一天會(huì)實(shí)現(xiàn)。說(shuō)得真好蚓再,做個(gè)勇敢的蝸牛滑肉,一步步,堅(jiān)持...
    信兒315閱讀 123評(píng)論 0 0