1.自動(dòng)釋放池是什么,如何工作???
答:內(nèi)存釋放池提供了一個(gè)對(duì)象容器,每次對(duì)象發(fā)送autorelease消息時(shí),對(duì)象的引用 計(jì)數(shù)并不真正變化,而是向內(nèi)存釋放池中添加一條記錄,記下對(duì)象的這種要求。直到 當(dāng)內(nèi)存釋放池發(fā)送drain或release消息時(shí),即當(dāng)池被銷毀前會(huì)通知池中的所有對(duì)象,全 部發(fā)送release消息才會(huì)真正將引用計(jì)數(shù)減少。簡(jiǎn)單說(shuō)內(nèi)存釋放池可以自動(dòng)管理對(duì)象釋 放問(wèn)題,這些語(yǔ)句必須要放在下面語(yǔ)句之間,直到池被釋放,一個(gè)對(duì)象要想納入內(nèi)存 釋放池對(duì)象,必須要發(fā)送autorelease。?
2.請(qǐng)解釋一下iOS應(yīng)用的沙盒機(jī)制???
iOS中的沙盒機(jī)制(SandBox)是一種安全體系,它規(guī)定了應(yīng)用程序只能在為該 應(yīng)用創(chuàng)建的文件夾內(nèi)讀取文件,不可以訪問(wèn)其他地方的內(nèi)容。所有的非代碼文件都保 存在這個(gè)地方,比如圖片、聲音、屬性列表和文本文件等。??
1.每個(gè)應(yīng)用程序都在自己的沙盒內(nèi)??
2.不能隨意跨越自己的沙盒去訪問(wèn)別的應(yīng)用程序沙盒的內(nèi)容?
3.應(yīng)用程序向外請(qǐng)求或接收數(shù)據(jù)都需要經(jīng)過(guò)權(quán)限認(rèn)證?
3 談?wù)勀銓?duì)多線程開(kāi)發(fā)的理解?iOS中有幾種實(shí)現(xiàn)多線程的方法??
好處:?
1、使用線程可以把程序中占據(jù)時(shí)間長(zhǎng)的任務(wù)放到后臺(tái)去處理,如圖片、視頻的下載?
2、發(fā)揮多核處理器的優(yōu)勢(shì),并發(fā)執(zhí)行讓系統(tǒng)運(yùn)行的更快、更流暢,用戶體驗(yàn)更好?
缺點(diǎn):?
1、大量的線程降低代碼的可讀性,?
2、更多的線程需要更多的內(nèi)存空間?
3、當(dāng)多個(gè)線程對(duì)同一個(gè)資源出現(xiàn)爭(zhēng)奪的時(shí)候要注意線程安全的問(wèn)題。?
iOS有三種多線程編程的技術(shù):?
1、NSThread(兩種創(chuàng)建方式)?
[NSThread detachNewThreadSelector:@selector(doSomething:) toTarget:self withObject:nil];NSThread *myThread = [[NSThread alloc] initWithTarget:self selector:@selector(doSomething:) object:nil];?
[myThread start];?
2、NSOperationQueue?
NSOperationQueue *oprationQueue = [[NSOperationQueue alloc] init];?
oprationQueue addOperationWithBlock:^{?
//這個(gè)block語(yǔ)句塊在子線程中執(zhí)行?
}?
http://alloc.sinaapp.com/wp/?p=237?
3、Grand Central Dispatch (GCD)?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{?
// 耗時(shí)的操作?
dispatch_async(dispatch_get_main_queue(), ^{?
// 更新界面 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
});?
});?
http://blog.csdn.net/totogo2010/article/details/8016129
PS:不顯示的創(chuàng)建線程的方法:用NSObject的類方法??performSelectorInBackground:withObject: 創(chuàng)建一個(gè)線程:[Obj performSelectorInBackground:@selector(doSomething) withObject:nil];