1.Difference between shallow copy and deep copy?淺復(fù)制和深復(fù)制的區(qū)別回溺?
答案:淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槹吮ぃ粡?fù)制引用對象本身。深層復(fù)制:復(fù)制引用對象本身驹马。意思就是說我有個(gè)A對象,復(fù)制一份后得到A_copy對象后,對于淺復(fù)制來說检诗,A和A_copy指向的是同一個(gè)內(nèi)存資源,復(fù)制的只不過是是一個(gè)指針瓢剿,對象本身資源還是只有一份逢慌,那如果我們對A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對象同樣被修改,這其實(shí)違背了我們復(fù)制拷貝的一個(gè)思想间狂。深復(fù)制就好理解了,內(nèi)存中存在了兩份獨(dú)立對象本身攻泼。用網(wǎng)上一哥們通俗的話將就是:淺復(fù)制好比你和你的影子,你完蛋鉴象,你的影子也完蛋深復(fù)制好比你和你的克隆人忙菠,你完蛋,你的克隆人還活著炼列。
2.What is advantage of categories? What is difference between implementing a category and inheritance?類別的作用只搁?繼承和類別在實(shí)現(xiàn)中有何區(qū)別?
答案:category 可以在不獲悉俭尖,不改變原來代碼的情況下往里面添加新的方法氢惋,只能添加,不能刪除修改稽犁。并且如果類別和原來類中的方法產(chǎn)生名稱沖突焰望,則類別將覆蓋原來的方法,因?yàn)轭悇e具有更高的優(yōu)先級已亥。類別主要有3個(gè)作用:(1)將類的實(shí)現(xiàn)分散到多個(gè)不同文件或多個(gè)不同框架中熊赖。(2)創(chuàng)建對私有方法的前向引用。(3)向?qū)ο筇砑臃钦絽f(xié)議虑椎。?繼承可以增加震鹉,修改或者刪除方法,并且可以增加屬性捆姜。
3.Difference between categories and extensions?類別和類擴(kuò)展的區(qū)別传趾。
答案:category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實(shí)現(xiàn)的泥技。extensions可以認(rèn)為是一個(gè)私有的Category浆兰。
4.Difference between protocol in objective c and interfaces in java?obc中的協(xié)議和java中的接口概念有何不同?
答案:OBC中的代理有2層含義,官方定義為 formal和informal protocol簸呈。前者和Java接口一樣榕订。informal protocol中的方法屬于設(shè)計(jì)模式考慮范疇,不是必須實(shí)現(xiàn)的蜕便,但是如果有實(shí)現(xiàn)劫恒,就會(huì)改變類的屬性。其實(shí)關(guān)于正式協(xié)議玩裙,類別和非正式協(xié)議我很早前學(xué)習(xí)的時(shí)候大致看過兼贸,也寫在了學(xué)習(xí)教程里“非正式協(xié)議概念其實(shí)就是類別的另一種表達(dá)方式“這里有一些你可能希望實(shí)現(xiàn)的方法,你可以使用他們更好的完成工作”吃溅。這個(gè)意思是溶诞,這些是可選的。比如我門要一個(gè)更好的方法决侈,我們就會(huì)申明一個(gè)這樣的類別去實(shí)現(xiàn)螺垢。然后你在后期可以直接使用這些更好的方法。這么看赖歌,總覺得類別這玩意兒有點(diǎn)像協(xié)議的可選協(xié)議枉圃。"現(xiàn)在來看,其實(shí)protocal已經(jīng)開始對兩者都統(tǒng)一和規(guī)范起來操作庐冯,因?yàn)橘Y料中說“非正式協(xié)議使用interface修飾“孽亲,現(xiàn)在我們看到協(xié)議中兩個(gè)修飾詞:“必須實(shí)現(xiàn)(@requied)”和“可選實(shí)現(xiàn)(@optional)”。
5.What are KVO and KVC?
答案:kvc:鍵 - 值編碼是一種間接訪問對象的屬性使用字符串來標(biāo)識(shí)屬性展父,而不是通過調(diào)用存取方法返劲,直接或通過實(shí)例變量訪問的機(jī)制。很多情況下可以簡化程序代碼栖茉。apple文檔其實(shí)給了一個(gè)很好的例子篮绿。kvo:鍵值觀察機(jī)制,他提供了觀察某一屬性變化的方法吕漂,極大的簡化了代碼亲配。具體用看到嗯哼用到過的一個(gè)地方是對于按鈕點(diǎn)擊變化狀態(tài)的的監(jiān)控。比如我自定義的一個(gè)button[cpp]?[self addObserver:self forKeyPath:@"highlighted" options:0 context:nil];???#pragma mark KVO??- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context?{???? if ([keyPath isEqualToString:@"highlighted"] ) {???????? [self setNeedsDisplay];???? }?}
對于系統(tǒng)是根據(jù)keypath去取的到相應(yīng)的值發(fā)生改變惶凝,理論上來說是和kvc機(jī)制的道理是一樣的吼虎。對于kvc機(jī)制如何通過key尋找到value:“當(dāng)通過KVC調(diào)用對象時(shí),比如:[self valueForKey:@”someKey”]時(shí)苍鲜,程序會(huì)自動(dòng)試圖通過幾種不同的方式解析這個(gè)調(diào)用鲸睛。首先查找對象是否帶有 someKey 這個(gè)方法,如果沒找到坡贺,會(huì)繼續(xù)查找對象是否帶有someKey這個(gè)實(shí)例變量(iVar),如果還沒有找到,程序會(huì)繼續(xù)試圖調(diào)用 -(id) valueForUndefinedKey:這個(gè)方法遍坟。如果這個(gè)方法還是沒有被實(shí)現(xiàn)的話拳亿,程序會(huì)拋出一個(gè)NSUndefinedKeyException異常錯(cuò)誤。?(cocoachina.com注:Key-Value Coding查找方法的時(shí)候愿伴,不僅僅會(huì)查找someKey這個(gè)方法肺魁,還會(huì)查找getsomeKey這個(gè)方法,前面加一個(gè)get隔节,或者_(dá)someKey以及_getsomeKey這幾種形式鹅经。同時(shí),查找實(shí)例變量的時(shí)候也會(huì)不僅僅查找someKey這個(gè)變量怎诫,也會(huì)查找_someKey這個(gè)變量是否存在瘾晃。)?設(shè)計(jì)valueForUndefinedKey:方法的主要目的是當(dāng)你使用-(id)valueForKey方法從對象中請求值時(shí),對象能夠在錯(cuò)誤發(fā)生前幻妓,有最后的機(jī)會(huì)響應(yīng)這個(gè)請求蹦误。這樣做有很多好處,下面的兩個(gè)例子說明了這樣做的好處肉津∏恳龋“來至cocoa,這個(gè)說法應(yīng)該挺有道理妹沙。因?yàn)槲覀冎纀utton卻是存在一個(gè)highlighted實(shí)例變量.因此為何上面我們只是add一個(gè)相關(guān)的keypath就行了偶洋,可以按照kvc查找的邏輯理解,就說的過去了距糖。
6.What is purpose of delegates?代理的作用玄窝?
答案:代理的目的是改變或傳遞控制鏈。允許一個(gè)類在某些特定時(shí)刻通知到其他類肾筐,而不需要獲取到那些類的指針哆料。可以減少框架復(fù)雜度吗铐。另外一點(diǎn)东亦,代理可以理解為java中的回調(diào)監(jiān)聽機(jī)制的一種類似。
7.What are mutable and immutable types in Objective C?obc中可修改和不可以修改類型唬渗。
答案:可修改不可修改的集合類典阵。這個(gè)我個(gè)人簡單理解就是可動(dòng)態(tài)添加修改和不可動(dòng)態(tài)添加修改一樣。比如NSArray和NSMutableArray镊逝。前者在初始化后的內(nèi)存空間就是固定不可變的壮啊,后者可以添加等,可以動(dòng)態(tài)申請新的內(nèi)存空間撑蒜。
8.When we call objective c is runtime language what does it mean?我們說的obc是動(dòng)態(tài)運(yùn)行時(shí)語言是什么意思歹啼?
答案:多態(tài)玄渗。 主要是將數(shù)據(jù)類型的確定由編譯時(shí),推遲到了運(yùn)行時(shí)狸眼。這個(gè)問題其實(shí)淺涉及到兩個(gè)概念藤树,運(yùn)行時(shí)和多態(tài)。簡單來說拓萌,運(yùn)行時(shí)機(jī)制使我們直到運(yùn)行時(shí)才去決定一個(gè)對象的類別岁钓,以及調(diào)用該類別對象指定方法。多態(tài):不同對象以自己的方式響應(yīng)相同的消息的能力叫做多態(tài)微王。意思就是假設(shè)生物類(life)都用有一個(gè)相同的方法-eat;那人類屬于生物屡限,豬也屬于生物,都繼承了life后炕倘,實(shí)現(xiàn)各自的eat钧大,但是調(diào)用是我們只需調(diào)用各自的eat方法。也就是不同的對象以自己的方式響應(yīng)了相同的消息(響應(yīng)了eat這個(gè)選擇器)激才。因此也可以說拓型,運(yùn)行時(shí)機(jī)制是多態(tài)的基礎(chǔ)?~~~
9.what is difference between NSNotification and protocol?通知和協(xié)議的不同之處瘸恼?
答案:協(xié)議有控制鏈(has-a)的關(guān)系劣挫,通知沒有。首先我一開始也不太明白东帅,什么叫控制鏈(專業(yè)術(shù)語了~)压固。但是簡單分析下通知和代理的行為模式,我們大致可以有自己的理解簡單來說靠闭,通知的話帐我,它可以一對多,一條消息可以發(fā)送給多個(gè)消息接受者愧膀。代理按我們的理解拦键,到不是直接說不能一對多,比如我們知道的明星經(jīng)濟(jì)代理人檩淋,很多時(shí)候一個(gè)經(jīng)濟(jì)人負(fù)責(zé)好幾個(gè)明星的事務(wù)芬为。只是對于不同明星間,代理的事物對象都是不一樣的蟀悦,一一對應(yīng)媚朦,不可能說明天要處理A明星要一個(gè)發(fā)布會(huì),代理人發(fā)出處理發(fā)布會(huì)的消息后日戈,別稱B的發(fā)布會(huì)了询张。但是通知就不一樣,他只關(guān)心發(fā)出通知浙炼,而不關(guān)心多少接收到感興趣要處理份氧。因此控制鏈(has-a從英語單詞大致可以看出唯袄,單一擁有和可控制的對應(yīng)關(guān)系。
10.What is push notification?什么是推送消息蜗帜?
11.Polymorphism越妈?關(guān)于多態(tài)性
答案:多態(tài),子類指針可以賦值給父類钮糖。這個(gè)題目其實(shí)可以出到一切面向?qū)ο笳Z言中,因此關(guān)于多態(tài)酌住,繼承和封裝基本最好都有個(gè)自我意識(shí)的理解店归,也并非一定要把書上資料上寫的能背出來。最重要的是轉(zhuǎn)化成自我理解酪我。
12.Singleton?對于單例的理解
答案:11消痛,12題目其實(shí)出的有點(diǎn)泛泛的感覺了,可能說是編程語言需要或是必備的基礎(chǔ)都哭≈壬。基本能用熟悉的語言寫出一個(gè)單例,以及可以運(yùn)用到的場景或是你編程中碰到過運(yùn)用的此種模式的框架類等欺矫。進(jìn)一步點(diǎn)纱新,考慮下如何在多線程訪問單例時(shí)的安全性。
13.What is responder chain?說說響應(yīng)鏈
答案: 事件響應(yīng)鏈穆趴。包括點(diǎn)擊事件脸爱,畫面刷新事件等。在視圖棧內(nèi)從上至下未妹,或者從下之上傳播簿废。可以說點(diǎn)事件的分發(fā)络它,傳遞以及處理族檬。具體可以去看下touch事件這塊。因?yàn)閱柕奶橄蠡藝?yán)重懷疑題目出到越后面就越籠統(tǒng)化戳。
14.Difference between frame and bounds?frame和bounds有什么不同单料?
答案:frame指的是:該view在父view坐標(biāo)系統(tǒng)中的位置和大小。(參照點(diǎn)是父親的坐標(biāo)系統(tǒng))bounds指的是:該view在本身坐標(biāo)系統(tǒng)中 的位置和大小迂烁。(參照點(diǎn)是本身坐標(biāo)系統(tǒng))
15.Difference between method and selector?方法和選擇器有何不同看尼?
答案:selector是一個(gè)方法的名字,method是一個(gè)組合體盟步,包含了名字和實(shí)現(xiàn).詳情可以看apple文檔藏斩。
16.Is there any garbage collection mechanism in Objective C.?OBC的垃圾回收機(jī)制?
答案: OBC2.0有Garbage collection却盘,但是iOS平臺(tái)不提供狰域。一般我們了解的objective-c對于內(nèi)存管理都是手動(dòng)操作的媳拴,但是也有自動(dòng)釋放池。但是差了大部分資料兆览,貌似不要和arc機(jī)制搞混就好了屈溉。求更多~~
17.NSOperation queue?
答案:存放NSOperation的集合類。操作和操作隊(duì)列抬探,基本可以看成java中的線程和線程池的概念子巾。用于處理ios多線程開發(fā)的問題。網(wǎng)上部分資料提到一點(diǎn)是小压,雖然是queue线梗,但是卻并不是帶有隊(duì)列的概念,放入的操作并非是按照嚴(yán)格的先進(jìn)現(xiàn)出怠益。這邊又有個(gè)疑點(diǎn)是仪搔,對于隊(duì)列來說,先進(jìn)先出的概念是Afunc添加進(jìn)隊(duì)列蜻牢,Bfunc緊跟著也進(jìn)入隊(duì)列烤咧,Afunc先執(zhí)行這個(gè)是必然的,但是Bfunc是等Afunc完全操作完以后抢呆,B才開始啟動(dòng)并且執(zhí)行煮嫌,因此隊(duì)列的概念離亂上有點(diǎn)違背了多線程處理這個(gè)概念。但是轉(zhuǎn)念一想其實(shí)可以參考銀行的取票和叫號(hào)系統(tǒng)镀娶。因此對于A比B先排隊(duì)取票但是B率先執(zhí)行完操作立膛,我們亦然可以感性認(rèn)為這還是一個(gè)隊(duì)列。但是后來看到一票關(guān)于這操作隊(duì)列話題的文章梯码,其中有一句提到“因?yàn)閮蓚€(gè)操作提交的時(shí)間間隔很近宝泵,線程池中的線程,誰先啟動(dòng)是不定的轩娶《蹋”瞬間覺得這個(gè)queue名字有點(diǎn)忽悠人了,還不如pool~綜合一點(diǎn)鳄抒,我們知道他可以比較大的用處在于可以幫組多線程編程就好了闯捎。
18.What is lazy loading?
答案:懶漢模式,只在用到的時(shí)候才去初始化许溅。也可以理解成延時(shí)加載瓤鼻。我覺得最好也最簡單的一個(gè)列子就是tableView中圖片的加載顯示了。一個(gè)延時(shí)載贤重,避免內(nèi)存過高茬祷,一個(gè)異步加載,避免線程堵塞并蝗。
19.Can we use two tableview controllers on one viewcontroller?是否在一個(gè)視圖控制器中嵌入兩個(gè)tableview控制器祭犯?
答案:一個(gè)視圖控制只提供了一個(gè)View視圖秸妥,理論上一個(gè)tableViewController也不能放吧,只能說可以嵌入一個(gè)tableview視圖沃粗。當(dāng)然粥惧,題目本身也有歧義,如果不是我們定性思維認(rèn)為的UIViewController最盅,而是宏觀的表示視圖控制者突雪,那我們倒是可以把其看成一個(gè)視圖控制者,它可以控制多個(gè)視圖控制器涡贱,比如TabbarController那樣的感覺挂签。
20.Can we use one tableview with two different datasources? How you will achieve this?一個(gè)tableView是否可以關(guān)聯(lián)兩個(gè)不同的數(shù)據(jù)源?你會(huì)怎么處理盼产?
答案:首先我們從代碼來看,數(shù)據(jù)源如何關(guān)聯(lián)上的勺馆,其實(shí)是在數(shù)據(jù)源關(guān)聯(lián)的代理方法里實(shí)現(xiàn)的戏售。因此我們并不關(guān)心如何去關(guān)聯(lián)他,他怎么關(guān)聯(lián)上草穆,方法只是讓我返回根據(jù)自己的需要去設(shè)置如相關(guān)的數(shù)據(jù)源灌灾。因此,我覺得可以設(shè)置多個(gè)數(shù)據(jù)源啊悲柱,但是有個(gè)問題是锋喜,你這是想干嘛呢?想讓列表如何顯示豌鸡,不同的數(shù)據(jù)源分區(qū)塊顯示嘿般?
21.Object-c的類可以多重繼承么?可以實(shí)現(xiàn)多個(gè)接口么涯冠?重寫一個(gè)類的方式用繼承好還是分類好炉奴?為什么?
Objective-c只支持單繼承蛇更,如果要實(shí)現(xiàn)多繼承的話瞻赶,可以通過類別和協(xié)議的方式來實(shí)現(xiàn),cocoa 中所有的類都是NSObject 的子類派任,多繼承在這里是用protocol 委托代理 來實(shí)現(xiàn)的砸逊。
22.#import 跟#include 又什么區(qū)別 #import<> 跟 #import""又什么區(qū)別?
答案:@class一般用于頭文件中需要聲明該類的某個(gè)實(shí)例變量的時(shí)候用到掌逛,在m文 件中還是需要使用#import而#import比起#include的好處就是不會(huì)引起交叉編譯师逸。
以下沒標(biāo)準(zhǔn)答案
23.類變量的@protected ,@private,@public,@package聲明各有什么含義?()
24.id 聲明的對象有什么特性颤诀?
答案:id是個(gè)很重要的類型字旭,是個(gè)可以指向任何類型的指針或者可以理解為指向任何未知類型的指針对湃。
25.MVC是什么?有什么特性遗淳?為什么在iPhone上被廣泛運(yùn)用拍柒?
答案:MVC設(shè)計(jì)模式考慮三種對象:模型對象、視圖對象屈暗、和控制器對象拆讯。模型對象代表 特別的知識(shí)和專業(yè)技能,它們負(fù)責(zé)保有應(yīng)用程序的數(shù)據(jù)和定義操作數(shù)據(jù)的邏輯养叛。視圖對象知道如何顯示應(yīng)用程序的模型數(shù)據(jù)种呐,而且可能允許用戶對其進(jìn)行編輯∑控制 器對象是應(yīng)用程序的視圖對象和模型對象之間的協(xié)調(diào)者爽室。
26.對于語句NSString* testObject = [[NSData alloc] init];testObject 在編譯時(shí)和運(yùn)行時(shí)分別是什么類型的對象?
27.什么是安全釋放淆攻?
28.為什么有些4.0獨(dú)有的objective-c 函數(shù)在3.1上運(yùn)行時(shí)會(huì)報(bào)錯(cuò).而4.0獨(dú)有的類在3.1上分配內(nèi)存時(shí)不會(huì)報(bào)錯(cuò)阔墩?分配的結(jié)果是什么?
29.為什么4.0獨(dú)有的c函數(shù)在3.1的機(jī)器上運(yùn)行不會(huì)報(bào)錯(cuò)(在沒有調(diào)用的情況下瓶珊?)而4.0獨(dú)有的類名在3.1的機(jī)器上一運(yùn)行就報(bào)錯(cuò)啸箫?
30.異常exception 怎么捕獲?不同的CPU結(jié)構(gòu)上開銷怎樣伞芹?C中又什么類似的方法忘苛?
31.property中屬性retain,copy,assgin的含義分別是什么?有什么區(qū)別唱较?將其轉(zhuǎn)換成get/set方法怎么做扎唾?有什么注意事項(xiàng)?
32.委托是什么南缓?委托的property聲明用什么屬性稽屏?為什么?
33.淺拷貝和深拷貝區(qū)別是什么西乖?...
34.Cocoa中有虛基類的概念么狐榔?怎么簡潔的實(shí)現(xiàn)?
35.自動(dòng)釋放池跟GC(垃圾回收)有什么區(qū)別获雕?iPhone上有GC么薄腻?[pool release] 和[pool drain]有什么區(qū)別?
iPhone上沒有GC届案。iPhone開發(fā)的時(shí)候沒有垃圾回收機(jī)制庵楷。
在垃圾回收環(huán)境中,release是一個(gè)空操作。因此尽纽,NSAutoreleasePool提供了drain方法咐蚯,在引用計(jì)數(shù)環(huán)境中,該方法的作用等同于調(diào)用release弄贿,但在垃圾回收環(huán)境中春锋,它會(huì)觸發(fā)垃圾回收(如果自上次垃圾回收以來分配的內(nèi)存大于當(dāng)前的閾值)。因此差凹,在通常情況下期奔,您應(yīng)該使用drain而不是release來銷毀自動(dòng)釋放池。
36.
for(int index = 0; index < 20; index ++){
NSString *tempStr = @”tempStr”;
NSLog(tempStr);
NSNumber *tempNumber = [NSNumber numberWithInt:2];
NSLog(tempNumber);
}
這段代碼有什么問題.危尿?會(huì)不會(huì)造成內(nèi)存泄露(多線程)呐萌?在內(nèi)存緊張的設(shè)備上做大循環(huán)時(shí)自動(dòng)釋放池是寫在循環(huán)內(nèi)好還是循環(huán)外好?為什么谊娇?
37.內(nèi)存管理的幾條原則時(shí)什么肺孤?按照默認(rèn)法則.那些關(guān)鍵字生成的對象需要手動(dòng)釋放?在和property結(jié)合的時(shí)候怎樣有效的避免內(nèi)存泄露济欢?
38.在一個(gè)對象釋放前.如果他被加到了notificationCenter 中.不在notificationcenter中remove這個(gè)對象可能會(huì)出現(xiàn)什么問題渠旁?
39.怎樣實(shí)現(xiàn)一個(gè) singleton的類.給出思路。
40.什么是序列化或者Acrchiving,可以用來做什么,怎樣與copy結(jié)合,原理是什么?.
41. 線程與進(jìn)程的區(qū)別和聯(lián)系?
答案: 進(jìn)程和線程都是由操作系統(tǒng)所體會(huì)的程序運(yùn)行的基本 單元船逮,系統(tǒng)利用該基本單元實(shí)現(xiàn)系統(tǒng)對應(yīng)用的并發(fā)性。
程和線程的主要差別在于它們是不同的操作系統(tǒng)資源 管理方式粤铭。進(jìn)程有獨(dú)立的地址空間挖胃,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對其它進(jìn)程產(chǎn)生影響梆惯,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑酱鸭。線程有自己的堆棧和局部變 量,但線程之間沒有單獨(dú)的地址空間垛吗,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉凹髓,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí)怯屉,耗費(fèi)資源較大蔚舀,效率要差一 些。但對于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作锨络,只能用線程赌躺,不能用進(jìn)程。
42.在iphone上有兩件事情要做,請問是在一個(gè)線程里按順序做效率高還是兩個(gè)線程里做效率高羡儿?為什么礼患?
43.runloop是什么?在主線程中的某個(gè)函數(shù)里調(diào)用了異步函數(shù),怎么樣block當(dāng)前線程,且還能響應(yīng)當(dāng)前線程的timer事件缅叠,touch事件等.
44.ios平臺(tái)怎么做數(shù)據(jù)的持久化?coredata和sqlite有無必然聯(lián)系悄泥?coredata是一個(gè)關(guān)系型數(shù)據(jù)庫嗎?
iOS中可以有四種持久化數(shù)據(jù)的方式: 屬性列表肤粱、對象歸檔弹囚、SQLite3和Core Data;core data可以使你以圖形界面的方式快速的定義app的數(shù)據(jù)模型狼犯,同時(shí)在你的代碼中容易獲取到它余寥。core data提供了基礎(chǔ)結(jié)構(gòu)去處理常用的功能,例如保存悯森,恢復(fù)宋舷,撤銷和重做,允許你在app中繼續(xù)創(chuàng)建新的任務(wù)瓢姻。在使用core data的時(shí)候祝蝠,你不用安裝額外的數(shù)據(jù)庫系統(tǒng),因?yàn)閏ore data使用內(nèi)置的sqlite數(shù)據(jù)庫幻碱。core data將你app的模型層放入到一組定義在內(nèi)存中的數(shù)據(jù)對象绎狭。core data會(huì)追蹤這些對象的改變,同時(shí)可以根據(jù)需要做相反的改變褥傍,例如用戶執(zhí)行撤銷命令儡嘶。當(dāng)core data在對你app數(shù)據(jù)的改變進(jìn)行保存的時(shí)候,core data會(huì)把這些數(shù)據(jù)歸檔恍风,并永久性保存蹦狂。
mac os x中sqlite庫,它是一個(gè)輕量級功能強(qiáng)大的關(guān)系數(shù)據(jù)引擎朋贬,也很容易嵌入到應(yīng)用程序凯楔。可以在多個(gè)平臺(tái)使用锦募,sqlite是一個(gè)輕量級的嵌入式sql數(shù)據(jù)庫編程摆屯。與core data框架不同的是,sqlite是使用程序式的糠亩,sql的主要的API來直接操作數(shù)據(jù)表虐骑。
Core Data不是一個(gè)關(guān)系型數(shù)據(jù)庫,也不是關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)赎线。雖然Core Dta支持SQLite作為一種存儲(chǔ)類型富弦,但它不能使用任意的SQLite數(shù)據(jù)庫。Core Data在使用的過程種自己創(chuàng)建這個(gè)數(shù)據(jù)庫氛驮。Core Data支持對一對多的關(guān)系腕柜。
45.闡述一個(gè)nil對象從interface bulider產(chǎn)生,到載入程序運(yùn)行空間,最后被釋放時(shí)所經(jīng)歷的生命周期.
46.notification是同步還是異步? kvo是同步還是異步盏缤?notification是全進(jìn)程空間的通知嗎砰蠢?kvo呢?
47.kvc是什么?kvo是什么?有什么特性唉铜?
48.響應(yīng)者鏈?zhǔn)鞘裁矗?/p>
49.unix上進(jìn)程怎么通信台舱?
UNIX主要支持三種通信方式:
1. 基本通信:主要用來協(xié)調(diào)進(jìn)程間的同步和互斥
(1)鎖文件通信
通信的雙方通過查找特定目錄下特定類型的文件(稱鎖文件)來完成進(jìn)程間? 對臨界資源訪問時(shí)的互斥;例如進(jìn)程p1訪問一個(gè)臨界資源潭流,首先查看是否有一個(gè)特定類型文件竞惋,若有,則等待一段時(shí)間再查找鎖文件灰嫉。
(2)記錄鎖文件
2. 管道通信:適應(yīng)大批量的數(shù)據(jù)傳遞
3. IPC????:適應(yīng)大批量的數(shù)據(jù)傳遞