iOS面試題-每日十道-第十二天

有誤的地方 歡迎高手能給指出

一. 關(guān)鍵字volatile有什么含義熟妓?并給出三個(gè)不同例子

一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了.
精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份.
下面是volatile變量的幾個(gè)例子:

  • 并行設(shè)備的硬件寄存器(如:狀態(tài)寄存器)
  • 一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automatic variables)
  • 多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量

二.對(duì)象是什么時(shí)候被release的?

引用計(jì)數(shù)為0時(shí). autorelease實(shí)際上只是把對(duì)release的調(diào)用延遲了,對(duì)于每一個(gè)Autorelease,系統(tǒng)只是把該Object放入了當(dāng)前的 Autoreleasepool中,當(dāng)該pool被釋放時(shí)拄显,該pool中的所有Object會(huì)被調(diào)用Release.對(duì)于每一個(gè)Runloop,系統(tǒng)會(huì)隱式創(chuàng)建一個(gè)Autoreleasepool,這樣所有的release pool會(huì)構(gòu)成一個(gè)象CallStack一樣的一個(gè)棧式結(jié)構(gòu),每一個(gè)Runloop結(jié)束時(shí),當(dāng)前棧頂?shù)腁utoreleasepool會(huì)被銷毀,這樣這 個(gè)pool里的每個(gè)Object(就是autorelease的對(duì)象)會(huì)被release.那什么是一個(gè)Runloop呢穷娱?一個(gè)UI事件,Timercall, delegate call,都會(huì)是一個(gè)新的Runloop

三26唾糯、iOS有沒(méi)有垃圾回收機(jī)制嬉荆?

iOS在Objective-c 2.0之后腊徙,也提供了垃圾回收機(jī)制.但是在iOS移動(dòng)終端設(shè)備中,并不支持垃圾回收機(jī)制.
因此.iPhone并不能對(duì)內(nèi)存進(jìn)行自動(dòng)垃圾回收處理(autorelease).因此需要注意 垃圾回收機(jī)制并不是ARC,ARC也是需要管理內(nèi)存的,只不過(guò)是隱式的管理內(nèi)存,編譯器會(huì)再適當(dāng)?shù)牡胤阶詣?dòng)插入retain,release和 autorelease消息.

四. ViewController的didReceiveMemoryWarning是在什么時(shí)候調(diào)用的屋摔?默認(rèn)的操作是什么烁设?

當(dāng)程序接到內(nèi)存警告時(shí)View Controller將會(huì)收到這個(gè)消息:didReceiveMemoryWarning從iOS3.0開(kāi)始,不需要重載這個(gè)函數(shù)钓试,把釋放內(nèi)存的代碼放到viewDidUnload中去装黑。這個(gè)函數(shù)的默認(rèn)實(shí)現(xiàn)是:檢查controller是否可以安全地釋放它的view(這里加粗的view指的是controller的view屬性),比如view本身沒(méi)有superview并且可以被很容易地重建(從nib或者loadView函數(shù))亚侠。如果view可以被釋放曹体,那么這個(gè)函數(shù)釋放view并調(diào)用viewDidUnload。你可以重載這個(gè)函數(shù)來(lái)釋放controller中使用的其他內(nèi)存硝烂。但要記得調(diào)用這個(gè)函數(shù)的super實(shí)現(xiàn)來(lái)允許父類(一般是UIVIewController)釋放view箕别。如果你的ViewController保存著view的子view的引用,那么,在早期的iOS版本中串稀,你應(yīng)該在這個(gè)函數(shù)中來(lái)釋放這些引用除抛。而在iOS3.0或更高版本中,你應(yīng)該在viewDidUnload中釋放這些引用母截。

五. delegate和notification區(qū)別到忽,分別在什么情況下使用

delegate針對(duì)one-to-one關(guān)系,并且receiver可以返回值給sender;
notification 可以針對(duì)one-to-one/many/none,receiver無(wú)返回值給sender

六. 內(nèi)存管理 Autorelease retain copy assign的set方法和含義

  • 初始化對(duì)象(alloc/init)的對(duì)象 你需要釋放(release)它 例如NSMutableArray aArray = [[NSArray alloc] init];后,需要[aArray release];
  • 你retain或copy的,你需要釋放它清寇。例如:
    [aArray retain]后,需要[aArray release];
  • 被傳遞(assign)的對(duì)象,你需要斟酌的retain和release.例如:
    obj2 = [[obj1 someMethod] autorelease];對(duì)象2接受對(duì)象1的一個(gè)自動(dòng)釋放的值,或傳遞一個(gè)基本數(shù)據(jù)類型(NSInteger,NSString)時(shí):你或希望將對(duì)象2進(jìn)行retain,以防止它在被使用之前就被自動(dòng)釋放掉.但是在retain后,一點(diǎn)要在適當(dāng)?shù)臅r(shí)候進(jìn)行釋放.

七. 談?wù)勀銓?duì)索引計(jì)數(shù)的理解

retain值 = 索引計(jì)數(shù)(ReferenceCounting) NSArray對(duì)象會(huì)retain(retain值加一)任何數(shù)組中的對(duì)象.當(dāng)NSArray被卸載(dealloc)的時(shí)候,所有數(shù)組中的對(duì)象會(huì)被執(zhí)行一次釋放(retain值減一).不僅僅是NSArray,任何收集類 (CollectionClasses) 都執(zhí)行類似操作.例如NSDictionary,甚至UINavigationController.Alloc/init建立的對(duì)象,索引計(jì)數(shù)為1.無(wú)需將其再次retain[NSArray array]和[NSDate date]等“方法”建立一個(gè)索引計(jì)數(shù)為1的對(duì)象,但是也是一個(gè)自動(dòng)釋放對(duì)象所以是本地臨時(shí)對(duì)象,那么無(wú)所謂了.如果是打算在全Class中使用的變量(iVar),則必須retain它.缺省的類方法返回值都被執(zhí)行了“自動(dòng)釋放”方法.(如上中的NSArray)在類中的卸載方法“dealloc”中,release所有未被平衡的NS對(duì)象.(所有未被autorelease,而retain值為1的)

八. 異步請(qǐng)求最大數(shù)目是多大,為什么只能這么多

這個(gè)數(shù)量是跟cpu有關(guān)的,并發(fā)性取決于cpu核數(shù),每個(gè)核只能同時(shí)處理一個(gè)任務(wù).4核cpu理論上可以并發(fā)處理4個(gè)任務(wù),如果按http來(lái)算就是4個(gè)請(qǐng)求,但是cpu是搶占式資源,所以一般來(lái)說(shuō)并發(fā)量是要根據(jù)任務(wù)的 耗時(shí)和cpu的繁忙度來(lái)計(jì)算4個(gè)左右只是個(gè)經(jīng)驗(yàn)值你開(kāi)10個(gè)短耗時(shí)的任務(wù)和幾個(gè)長(zhǎng)耗時(shí)任務(wù)的效率是不同的- -..一般來(lái)說(shuō)估算這個(gè)量的最大效率估算公示是cpu核數(shù)*2-1喘漏,這個(gè)公式是當(dāng)時(shí)對(duì)集群進(jìn)行壓測(cè)得到的結(jié)論.cpu搶占時(shí)間跟任務(wù)時(shí)長(zhǎng)…開(kāi)啟這個(gè)數(shù)量的 線程可以最大化的榨干cpu一個(gè)道理。cpu不可能都被搶去做connection.iOS是cpu密集型的消耗?华烟。這個(gè)大概知道就行了,也不會(huì)有人特 別在意吧…cpu核數(shù)2-1那個(gè)是做淘寶的java團(tuán)隊(duì)壓測(cè)得到的線程最優(yōu)數(shù)?翩迈,放在iOS上也多少適用…一般來(lái)說(shuō)不超過(guò)這個(gè)量就好,線程不是起的越多越好,線程數(shù)就是…cpu來(lái)決定的

九. 什么是NSManagedObject模型

NSManagedObject是NSObject的子類 ,也是coredata的重要組成部分,它是一個(gè)通用的類,實(shí)現(xiàn)了core data 模型層所需的基本功能,用戶可通過(guò)子類化NSManagedObject,建立自己的數(shù)據(jù)模型

十.簡(jiǎn)述NULL nil NIL NSNull的區(qū)別

  • NULL是c語(yǔ)言中的空指針.
  • nil是OC中指向空對(duì)象的指針
  • Nil是OC指向類的空指針
  • NSNull是數(shù)字或字典集合對(duì)象中表示空值對(duì)象.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盔夜,一起剝皮案震驚了整個(gè)濱河市负饲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌喂链,老刑警劉巖返十,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異椭微,居然都是意外死亡洞坑,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門赏表,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)检诗,“玉大人,你說(shuō)我怎么就攤上這事瓢剿》昊牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵间狂,是天一觀的道長(zhǎng)攻泼。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鉴象,這世上最難降的妖魔是什么忙菠? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮纺弊,結(jié)果婚禮上牛欢,老公的妹妹穿的比我還像新娘。我一直安慰自己淆游,他們只是感情好傍睹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布隔盛。 她就那樣靜靜地躺著,像睡著了一般拾稳。 火紅的嫁衣襯著肌膚如雪吮炕。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天访得,我揣著相機(jī)與錄音龙亲,去河邊找鬼。 笑死悍抑,一個(gè)胖子當(dāng)著我的面吹牛鳄炉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播传趾,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼迎膜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了浆兰?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤珊豹,失蹤者是張志新(化名)和其女友劉穎簸呈,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體店茶,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蜕便,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了贩幻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轿腺。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖丛楚,靈堂內(nèi)的尸體忽然破棺而出族壳,到底是詐尸還是另有隱情,我是刑警寧澤趣些,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布仿荆,位于F島的核電站,受9級(jí)特大地震影響坏平,放射性物質(zhì)發(fā)生泄漏拢操。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一舶替、第九天 我趴在偏房一處隱蔽的房頂上張望令境。 院中可真熱鬧,春花似錦顾瞪、人聲如沸舔庶。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栖茉。三九已至篮绿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間吕漂,已是汗流浹背亲配。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惶凝,地道東北人吼虎。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像苍鲜,于是被迫代替她去往敵國(guó)和親思灰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,129評(píng)論 29 470
  • 1.OC里用到集合類是什么混滔? 基本類型為:NSArray洒疚,NSSet以及NSDictionary 可變類型為:NS...
    輕皺眉頭淺憂思閱讀 1,366評(píng)論 0 3
  • 轉(zhuǎn):http://www.cocoachina.com/programmer/20151019/13746.htm...
    Style_偉閱讀 1,298評(píng)論 0 3
  • 注:此文章來(lái)源:Job_Yang 的簡(jiǎn)書(shū) 1. Object-c的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么?Categ...
    廣益散人閱讀 1,345評(píng)論 0 13
  • 路邊的玉蘭又開(kāi)了 玉蘭下的你,在哪呢吠昭? 景點(diǎn)的門票開(kāi)售了 芊芊玉手哪兒去了喊括? 夜攤的燈光亮起來(lái)了 張開(kāi)的手臂,擁抱...
    零落的風(fēng)閱讀 91評(píng)論 0 0