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是什么匾寝?重寫一個類的方式用繼承好還是用分類好?為什么叉谜?
不可多繼承旗吁;