面試題(每日更新)

1.什么情況使用weak關(guān)鍵字,相比assign有什么不同?

什么情況下使用weak關(guān)鍵字?
1.在ARC中,在有可能出現(xiàn)循環(huán)引用的時(shí)候,往往要通過(guò)讓其中一端使用weak來(lái)解決,比如delegate代理
2.自身已經(jīng)對(duì)它進(jìn)行一次強(qiáng)引用,沒(méi)有必要再?gòu)?qiáng)引用一次,此時(shí)也會(huì)使用weak,自定義IBOutlet控件屬性一般也使用weak,當(dāng)然也可以使用strong
不同點(diǎn):
1.weak此特質(zhì)表明該屬性定義了一種"非擁有關(guān)系"。為這種屬性設(shè)置新值時(shí),設(shè)置方法既不保留新值,也不釋放舊值.此特質(zhì)同assign類(lèi)似,然而在屬性所指的對(duì)象遭到摧毀時(shí),屬性值也會(huì)清空(nil out)。而assign的“設(shè)置方法”只會(huì)執(zhí)行針對(duì)"純量類(lèi)型"(例如 CGFloat 或NSInteger)的簡(jiǎn)單賦值操作。
2.assigin可以使用非OC對(duì)象,而weak必須使用OC對(duì)象。

2.這個(gè)寫(xiě)法會(huì)出什么問(wèn)題:

@Property(copy) NSMutableArray *array

兩個(gè)問(wèn)題:
1.添加,刪除,修改數(shù)組內(nèi)的元素的時(shí)候,程序會(huì)因?yàn)檎也坏椒椒ǘ紳?因?yàn)閏opy就是復(fù)制一個(gè)不可變NSArray的對(duì)象,2.使用了atomic屬性會(huì)嚴(yán)重影響性能,因?yàn)閷傩阅J(rèn)的修飾符就是atomic。
在iOS開(kāi)發(fā)中一般都會(huì)使用nonatomic屬性修飾,但在開(kāi)發(fā)Mac OS X程序中使用atomic修飾屬性通常不會(huì)有性能瓶頸.

3.Category和extension的區(qū)別

  • 分類(lèi)有名字,類(lèi)擴(kuò)展沒(méi)有分類(lèi)名字,是一種特殊的分類(lèi)。
  • 分類(lèi)只能擴(kuò)展方法(屬性僅僅是聲明,并沒(méi)有實(shí)現(xiàn)),類(lèi)擴(kuò)張可以擴(kuò)展屬性,成員變量和方法.

4.define和const常量有聲明區(qū)別?

  • define在預(yù)處理階段進(jìn)行替換,const常量在編譯階段使用.
  • 宏不做類(lèi)型檢查,僅僅是進(jìn)行替換,const常量有數(shù)據(jù)類(lèi)型,會(huì)進(jìn)行類(lèi)型判斷
  • define不能調(diào)試,const常量可以調(diào)試
  • define定義的常量在替換后運(yùn)行過(guò)程中會(huì)不斷的占用內(nèi)存,而const定義的常量存儲(chǔ)在數(shù)據(jù)段中只有一份copy,效率更高.
  • define可以定義一些簡(jiǎn)單的函數(shù),而const不可以

5.block和weak修飾符的區(qū)別?

  • __block不管是在ARC還是MRC模式下都可以使用,可以修飾對(duì)象,也可以修飾基本數(shù)據(jù)類(lèi)型.
  • __weak只能在ARC模式下使用,只能修飾(NSString),不能修飾基本數(shù)據(jù)類(lèi)型
  • block修飾的對(duì)象可以在block中被重新賦值,weak修飾的對(duì)象不可以

6.static關(guān)鍵字的作用

  • 函數(shù)(方法)體內(nèi)static變量的作用返回為該函數(shù)體,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用的時(shí)候仍然維持上次的值.
  • 在模塊內(nèi)的static全局變量可以被模塊內(nèi)的所有函數(shù)調(diào)用,不能被模塊外的函數(shù)調(diào)用.
  • 在模塊內(nèi)的 static 函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個(gè)函數(shù)的使用范圍被限制在聲明 它的模塊內(nèi);
  • 在類(lèi)中的 static 成員變量屬于整個(gè)類(lèi)所擁有,對(duì)類(lèi)的所有對(duì)象只有一份拷貝;
  • 在類(lèi)中的 static 成員函數(shù)屬于整個(gè)類(lèi)所擁有,這個(gè)函數(shù)不接收 this 指針,因而只能訪問(wèn)類(lèi)的static 成員變量

7.堆和棧的區(qū)別

  • 從管理方式來(lái)講
    對(duì)于棧來(lái)講,是由編譯器自動(dòng)管理,無(wú)需我們手工控制;
    對(duì)于堆來(lái)說(shuō),釋放工作由程序員控制,容易產(chǎn)生內(nèi)存泄露(memory leak)
  • 從申請(qǐng)大小大小方面講
    ??臻g比較小
    堆控件比較大
  • 從數(shù)據(jù)存儲(chǔ)方面來(lái)講
    棧空間中一般存儲(chǔ)基本類(lèi)型,對(duì)象的地址
    堆空間一般存放對(duì)象本身,block的copy等

8.@property的本質(zhì)是什么?

  • @property其實(shí)就是在編譯階段有編譯器自動(dòng)幫我們生成ivae成員變量,getter方法,setter方法

9.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒(méi)怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個(gè)offer,總結(jié)起來(lái)就是把...
    Dove_iOS閱讀 27,667評(píng)論 30 472
  • iOS面試小貼士 ———————————————回答好下面的足夠了------------------------...
    不言不愛(ài)閱讀 2,255評(píng)論 0 7
  • 多線程、特別是NSOperation 和 GCD 的內(nèi)部原理。運(yùn)行時(shí)機(jī)制的原理和運(yùn)用場(chǎng)景。SDWebImage的原...
    LZM輪回閱讀 2,133評(píng)論 0 12
  • ———————————————回答好下面的足夠了---------------------------------...
    恒愛(ài)DE問(wèn)候閱讀 1,846評(píng)論 0 4
  • 史上最全的iOS面試題及答案 iOS面試小貼士———————————————回答好下面的足夠了----------...
    Style_偉閱讀 2,580評(píng)論 0 35

友情鏈接更多精彩內(nèi)容