一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看

iOS基礎練習題

時(shí)間:2024-10-16 17:36:08 NIIT認證 我要投稿
  • 相關(guān)推薦

iOS基礎練習題

  iOS不支持Flash。Adobe計劃在iPhone發(fā)行第三方Flash Lite軟件程序,但現時(shí)仍未有計劃。以下是小編整理的關(guān)于iOS基礎練習題,希望大家認真閱讀!

  1.Difference between shallow copy and deep copy?

  淺復制和深復制的區別?

  答案:淺層復制:只復制指向對象的指針,而不復制引用對象本身。

  深層復制:復制引用對象本身。

  意思就是說(shuō)我有個(gè)A對象,復制一份后得到A_copy對象后,對于淺復制來(lái)說(shuō),A和A_copy指向的是同一個(gè)內存資源,復制的只不過(guò)是是一個(gè)指針,對象本身資源

  還是只有一份,那如果我們對A_copy執行了修改操作,那么發(fā)現A引用的對象同樣被修改,這其實(shí)違背了我們復制拷貝的一個(gè)思想。深復制就好理解了,內存中存在了

  兩份獨立對象本身。

  用網(wǎng)上一哥們通俗的話(huà)將就是:

  淺復制好比你和你的影子,你完蛋,你的影子也完蛋

  深復制好比你和你的克隆人,你完蛋,你的克隆人還活著(zhù)。

  2.What is advantage of categories? What is difference between implementing a category and inheritance?

  類(lèi)別的作用?繼承和類(lèi)別在實(shí)現中有何區別?

  答案:category 可以在不獲悉,不改變原來(lái)代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。

  并且如果類(lèi)別和原來(lái)類(lèi)中的方法產(chǎn)生名稱(chēng)沖突,則類(lèi)別將覆蓋原來(lái)的方法,因為類(lèi)別具有更高的優(yōu)先級。

  類(lèi)別主要有3個(gè)作用:

  (1)將類(lèi)的實(shí)現分散到多個(gè)不同文件或多個(gè)不同框架中。

  (2)創(chuàng )建對私有方法的前向引用。

  (3)向對象添加非正式協(xié)議。

  繼承可以增加,擴展父類(lèi)方法,并且可以增加屬性。

  3.Difference between categories and extensions?

  類(lèi)別和類(lèi)擴展的區別。

  答案:category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實(shí)現的。

  extensions可以認為是一個(gè)私有的Category。

  4.Difference between protocol in objective c and interfaces in Java?

  oc中的協(xié)議和java中的接口概念有何不同?

  答案:OC中的協(xié)議有2層含義,官方定義為 formal和informal protocol。前者和Java接口一樣。

  informal protocol中的方法屬于設計模式考慮范疇,不是必須實(shí)現的,但是如果有實(shí)現,就會(huì )改變類(lèi)的屬性。

  其實(shí)關(guān)于正式協(xié)議,類(lèi)別和非正式協(xié)議我很早前學(xué)習的時(shí)候大致看過(guò),也寫(xiě)在了學(xué)習教程里

  “非正式協(xié)議概念其實(shí)就是類(lèi)別的另一種表達方式“這里有一些你可能希望實(shí)現的方法,你可以使用他們更好的完成工作”。

  這個(gè)意思是,這些是可選的。比如我門(mén)要一個(gè)更好的方法,我們就會(huì )申明一個(gè)這樣的類(lèi)別去實(shí)現。然后你在后期可以直接使用這些更好的方法。

  這么看,總覺(jué)得類(lèi)別這玩意兒有點(diǎn)像協(xié)議的可選協(xié)議。"

  現在來(lái)看,其實(shí)protocal已經(jīng)開(kāi)始對兩者都統一和規范起來(lái)操作,因為資料中說(shuō)“非正式協(xié)議使用interface修飾“,

  現在我們看到協(xié)議中兩個(gè)修飾詞:“必須實(shí)現(@requied)”和“可選實(shí)現(@optional)”。

  OC中的協(xié)議(formal protocol)與java中的接口概念基本一致,OC中非正式協(xié)議(informal protocol)就是類(lèi)別。在java中如果繼承了接口,但不實(shí)現其方法,會(huì )得到一個(gè)error(無(wú)法編譯);在OC中的正式協(xié)議,如果不實(shí)現,會(huì )得到一個(gè)warning(可編譯執行),如果想去除waring,還可以加關(guān)鍵字(@optional),讓它可選實(shí)現方法。

  5.What are KVO and KVC?

  答案:kvc:鍵 - 值編碼是一種間接訪(fǎng)問(wèn)對象的屬性使用字符串來(lái)標識屬性,而不是通過(guò)調用存取方法,直接或通過(guò)實(shí)例變量訪(fǎng)問(wèn)的機制。

  很多情況下可以簡(jiǎn)化程序代碼。apple文檔其實(shí)給了一個(gè)很好的例子。

  kvo:鍵值觀(guān)察機制,他提供了觀(guān)察某一屬性變化的方法,極大的簡(jiǎn)化了代碼。

  具體用看到嗯哼用到過(guò)的一個(gè)地方是對于按鈕點(diǎn)擊變化狀態(tài)的的監控。

  比如我自定義的一個(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];

  }

  }

  對于系統是根據keypath去取的到相應的值發(fā)生改變,理論上來(lái)說(shuō)是和kvc機制的道理是一樣的。

  對于kvc機制如何通過(guò)key尋找到value:

  “當通過(guò)KVC調用對象時(shí),比如:[self valueForKey:@”someKey”]時(shí),程序會(huì )自動(dòng)試圖通過(guò)幾種不同的方式解析這個(gè)調用。首先查找對象是否帶有 someKey 這個(gè)方法,如果沒(méi)找到,會(huì )繼續查找對象是否帶有someKey這個(gè)實(shí)例變量(iVar),如果還沒(méi)有找到,程序會(huì )繼續試圖調用 -(id) valueForUndefinedKey:這個(gè)方法。如果這個(gè)方法還是沒(méi)有被實(shí)現的話(huà),程序會(huì )拋出一個(gè)NSUndefinedKeyException異常錯誤。

  (cocoachina.com注:Key-Value Coding查找方法的時(shí)候,不僅僅會(huì )查找someKey這個(gè)方法,還會(huì )查找getsomeKey這個(gè)方法,前面加一個(gè)get,或者_someKey以及_getsomeKey這幾種形式。同時(shí),查找實(shí)例變量的時(shí)候也會(huì )不僅僅查找someKey這個(gè)變量,也會(huì )查找_someKey這個(gè)變量是否存在。)

  設計valueForUndefinedKey:方法的主要目的是當你使用-(id)valueForKey方法從對象中請求值時(shí),對象能夠在錯誤發(fā)生前,有最后的機會(huì )響應這個(gè)請求。這樣做有很多好處,下面的兩個(gè)例子說(shuō)明了這樣做的好處!

  來(lái)至cocoa,這個(gè)說(shuō)法應該挺有道理。

  因為我們知道button卻是存在一個(gè)highlighted實(shí)例變量.因此為何上面我們只是add一個(gè)相關(guān)的keypath就行了,

  可以按照kvc查找的邏輯理解,就說(shuō)的過(guò)去了。

  6.What is purpose of delegates?

  代理的作用?

  答案:代理的目的是改變或傳遞控制鏈。允許一個(gè)類(lèi)在某些特定時(shí)刻通知到其他類(lèi),而不需要獲取到那些類(lèi)的指針?梢詼p少框架復雜度。

  另外一點(diǎn),代理可以理解為java中的回調監聽(tīng)機制的一種類(lèi)似。

  7.What are mutable and immutable types in Objective C?

  oc中可修改和不可以修改類(lèi)型。

  答案:可修改不可修改的集合類(lèi)。這個(gè)我個(gè)人簡(jiǎn)單理解就是可動(dòng)態(tài)添加修改和不可動(dòng)態(tài)添加修改一樣。

  比如NSArray和NSMutableArray。前者在初始化后的內存控件就是固定不可變的,后者可以添加等,可以動(dòng)態(tài)申請新的內存空間。

  8.When we call objective c is runtime language what does it mean?

  我們說(shuō)的oc是動(dòng)態(tài)運行時(shí)語(yǔ)言是什么意思?

  答案:多態(tài)。 主要是將數據類(lèi)型的確定由編譯時(shí),推遲到了運行時(shí)。

  這個(gè)問(wèn)題其實(shí)淺涉及到兩個(gè)概念,運行時(shí)和多態(tài)。

  簡(jiǎn)單來(lái)說(shuō),運行時(shí)機制使我們直到運行時(shí)才去決定一個(gè)對象的類(lèi)別,以及調用該類(lèi)別對象指定方法。

  多態(tài):不同對象以自己的方式響應相同的消息的能力叫做多態(tài)。意思就是假設生物類(lèi)(life)都用有一個(gè)相同的方法-eat;

  那人類(lèi)屬于生物,豬也屬于生物,都繼承了life后,實(shí)現各自的eat,但是調用是我們只需調用各自的eat方法。

  也就是不同的對象以自己的方式響應了相同的消息(響應了eat這個(gè)選擇器)。

  因此也可以說(shuō),運行時(shí)機制是多態(tài)的基礎?~~~

  9.what is difference between NSNotification and protocol?

  通知和協(xié)議的不同之處?

  答案:協(xié)議有控制鏈(has-a)的關(guān)系,通知沒(méi)有。

  首先我一開(kāi)始也不太明白,什么叫控制鏈(專(zhuān)業(yè)術(shù)語(yǔ)了~)。但是簡(jiǎn)單分析下通知和代理的行為模式,我們大致可以有自己的理解

  簡(jiǎn)單來(lái)說(shuō),通知的話(huà),它可以一對多,一條消息可以發(fā)送給多個(gè)消息接受者。

  代理按我們的理解,到不是直接說(shuō)不能一對多,比如我們知道的明星經(jīng)濟代理人,很多時(shí)候一個(gè)經(jīng)濟人負責好幾個(gè)明星的事務(wù)。

  只是對于不同明星間,代理的事物對象都是不一樣的,一一對應,不可能說(shuō)明天要處理A明星要一個(gè)發(fā)布會(huì ),代理人發(fā)出處理發(fā)布會(huì )的消息后,別稱(chēng)B的

  發(fā)布會(huì )了。但是通知就不一樣,他只關(guān)心發(fā)出通知,而不關(guān)心多少接收到感興趣要處理。

  因此控制鏈(has-a從英語(yǔ)單詞大致可以看出,單一擁有和可控制的對應關(guān)系。

【iOS基礎練習題】相關(guān)文章:

iOS基礎問(wèn)答面試題08-20

HTML基礎練習題目10-12

秘書(shū)資格考試基礎練習題07-21

育嬰師考試基礎練習題10-15

小升初英語(yǔ)基礎知識及練習題07-29

小升初語(yǔ)文基礎知識練習題09-25

秘書(shū)資格考試基礎練習題(選擇)10-28

計算機應用基礎模擬練習題06-25

最新計算機應用基礎練習題06-19

初級經(jīng)濟法基礎沖刺練習題06-09

一级日韩免费大片,亚洲一区二区三区高清,性欧美乱妇高清come,久久婷婷国产麻豆91天堂,亚洲av无码a片在线观看