1.readwrite,readonly,assign,retain,copy,nonatomic屬性的作用?
讀寫(默認);只讀;
對基礎(chǔ)數(shù)據(jù)類型 (NSInteger,CGFloat)和C數(shù)據(jù)類型(int, float, double, char)等直接復(fù)制;
釋放舊的對象再將舊的對象的值賦給新對象;
釋放舊對象再講傳入對象的一份拷貝賦給新對象;
atomic和nonatomic用來決定編譯器生成的getter和setter是否為原子操作;
@dynamic是告訴編譯器由我們自己來實現(xiàn)訪問方法,@synthesize是setter和getter方法編譯器就會幫你實現(xiàn)了。
2.OC的內(nèi)存管理機制?
引用計數(shù)
MRC(Manual Reference Count),ARC(Auto Reference Count)
3.UIView與CALayer有什么區(qū)別?
1)UIView屬于UIKit框架,CALayer屬于QuartzCore框架;
2)CALayer 比UIView更加輕量級別, 但是可以實現(xiàn)同樣的效果;
3)UIView可以處理用戶的觸摸事件,而CALayer不可以;
4)UIView中有個屬性是layer;
5)UIView是視圖界面的元素,而CALayer是繪制內(nèi)容;
4.簡述視圖控制器的生命周期?
alloc:創(chuàng)建對象,分配空間
init (initWithNibName) :初始化對象,初始化數(shù)據(jù)
loadView:從nib載入視圖 ,通常這一步不需要去干涉。除非你沒有使用xib文件創(chuàng)建視圖
viewDidLoad
viewWillAppear
viewDidAppear
viewWillDisappear
viewDidDisappear
5.ios的系統(tǒng)架構(gòu)層次?

核心系統(tǒng)層(Core OS Layer):提供為上層結(jié)構(gòu)提供最基礎(chǔ)的服務(wù)如操作系統(tǒng)內(nèi)核服務(wù)、本地認證、安全、加速等。
操作系統(tǒng)內(nèi)核服務(wù)(BSD sockets、I/O訪問、內(nèi)存申請、文件系統(tǒng)、數(shù)學(xué)計算等)
本地認證(指紋識別驗證等)
安全(提供管理證書、公鑰、密鑰等的接口)
加速? (執(zhí)行數(shù)學(xué)、大數(shù)字以及DSP運算,這些接口iOS設(shè)備硬件相匹配)
核心服務(wù)層(Core Services Layer):為程序提供基礎(chǔ)的系統(tǒng)服務(wù)例如網(wǎng)絡(luò)訪問、瀏覽器引擎、定位、文件訪問、數(shù)據(jù)庫訪問等,主要包含以下框架:
CFNetwork(網(wǎng)絡(luò)訪問)
Core Data(數(shù)據(jù)存儲)
Core Location(定位功能)
Core Motion(重力加速度,陀螺儀)
Foundation(基礎(chǔ)功能如NSString)
Webkit(瀏覽器引擎)
JavaScript(JavaScript引擎)
媒體層(Media Layer):主要提供圖像引擎、音頻引擎、視頻引擎框架。
圖像引擎(Core Graphics、Core Image、Core Animation、OpenGL ES)
音頻引擎 (Core Audio、 AV Foundation、OpenAL)
視頻引擎(AV Foundation、Core Media)
可觸摸層(Cocoa Touch Layer):主要提供用戶交互相關(guān)的服務(wù)如界面控件、事件管理、通知中心、地圖,包含以下框架:
UIKit(界面相關(guān))
EventKit(日歷事件提醒等)
Notification Center(通知中心)
MapKit(地圖顯示)
Address Book(聯(lián)系人)
iAd(廣告)
Message UI(郵件與SMS顯示)
PushKit(iOS8新push機制)
6.常見的多線程方法?
NSThread,GCD,NSOperation
7.#import和#include的區(qū)別 ?@class的作用?
#import完整的包含某個文件的內(nèi)容,不會引發(fā)交叉編譯,
#include是C/C++中導(dǎo)入頭文件的關(guān)鍵字,完整的包含某個文件的內(nèi)容,
@class僅僅是聲明一個類名,可解決循環(huán)包含的問題。
8.id聲明的對象有什么特征?
id類型的對象可以是任意類型的OC對象,與C中的void*萬能指針相似。
具有運行時的特點,在程序運行時才確定對象的類型。
10.一個objc對象的isa的指針指向什么?有什么作用?
11.runtime如何通過select找到相應(yīng)的IMP地址?
12.為什么UIScrollerView的滾動會導(dǎo)致NSTimer失效?
13.對于語句NSString *obj =[[NSData alloc] init]; objc在編譯時和運行時分別是什么類型的對象?
編譯時:NSString;運行時:NSData。
14.寫一個Setter方法分別對應(yīng)retain和copy。
15.OC的類可以多重繼承么?可以實現(xiàn)多個接口么?
Category是什么?重寫一個類的方式用繼承好還是用分類好?為什么?
不可多繼承;