天天看點

iOS 面霸面試題總結~[有答案]

//聯系人:石虎  QQ: 1224614774昵稱:嗡嘛呢叭咪哄

Day 01

01-分類與繼承的差別

分類:增加方法,不能增加變量.但是可以通路類的變量

繼承:子類繼承了父類所有的方法和變量

繼承能增加變量和方法,分類隻能增加方法,不能增加變量.

繼承會産生一個新的類.

分類不會産生新的類.同名的方法,分類裡面優先調用

02-分類與類擴充的差別

類擴充:可以添加屬性聲明,添加的方法聲明,匿名的分類

分類不能添加屬性,隻能添加方法

Day 02

//retain  mrc  strong  arc

01- 展開:@property (nonatomic,retain) NSArray *cars;

getter方法:

-(NSArray *)cars{

    return _cars;

}

setter方法:

-(void)setCars:(NSArray *)cars{

    if(_cars = !cars){

        [_cars release];

        _cars = [cars retain];

    }

}

-(void)dealloc{

    [super dealloc];

//    [_cars release];

    _cars = nil;

}

02- NULL,nil, Nil, NSNull

nil 是對objective c對象賦空值為了避免野指針對指針指派一個nil

Nil:表示對類進行賦空值

NULL:用于對非對象指針賦空值,比如C指針

NSNull 集合裡的空對象

對于像NSArray這樣的類型,nil或NULL不能做為加到其中的Object,如果定義了一個NSArray,為其配置設定了記憶體,又想設定其中的内容為空,則可以用[NSNULL null】傳回的對象來初始化NSArray中的内容  初始化内容為空

Day 03

寫一個代理

Day 04

寫一個代理

Day 05

weak 和 strong的差別,都是啥時候用?

Day 07 解釋@selector和SEL的含義和作用

@selector對方法進行包裝

SEL是一個資料類型.每一個方法都有一個 isa指針

[self run]

Day 08 程式啟動的過程

0.main函數入口

1.建立UIApplication對象,建立代理對象,設定兩者的代理關系

2.開啟消息循環

3.加載plist檔案,看裡面有沒有指定storyboard,如果指定了,建立UIWindow對象.加載storyboard檔案.根據storyboard裡面箭頭指向的控制器,建立控制器對象,并且設定成window的根控制器,建立控制器的view,顯示到window上并且展示出來

沒有storyboard,就需要在程式啟動完成以後的代理函數裡面寫代碼建立widow對象,建立控制器設定成window的根控制器,展示window

Day 09資料怎麼存儲,有幾種方式

偏好設定

xml xml檔案或者plist檔案

NSCoding

sqlite 

Core data

Day 10對記憶體管理的了解

MRC

引用計數器

alloc new (mutable)copy retain  +1

relese  autorelease -1

蘋果官方的記憶體管理原則:

1.誰建立或者 retain,誰釋放

2.alloc new (mutable)copy retain ,就會要對應一個

relese  autorelease 

dealloc 對象被銷毀的之前,調用

ARC

強指針  對象有強指針指向,就不會被釋放

弱指針

循環引用問題