<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • iOS基礎(chǔ)練習(xí)題

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

    iOS基礎(chǔ)練習(xí)題

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

      1.Difference between shallow copy and deep copy?

      淺復(fù)制和深復(fù)制的區(qū)別?

      答案:淺層復(fù)制:只復(fù)制指向?qū)ο蟮闹羔槪粡?fù)制引用對象本身。

      深層復(fù)制:復(fù)制引用對象本身。

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

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

      兩份獨(dú)立對象本身。

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

      淺復(fù)制好比你和你的影子,你完蛋,你的影子也完蛋

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

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

      類別的作用?繼承和類別在實現(xiàn)中有何區(qū)別?

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

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

      類別主要有3個作用:

      (1)將類的實現(xiàn)分散到多個不同文件或多個不同框架中。

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

      (3)向?qū)ο筇砑臃钦絽f(xié)議。

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

      3.Difference between categories and extensions?

      類別和類擴(kuò)展的區(qū)別。

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

      extensions可以認(rèn)為是一個私有的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è)計模式考慮范疇,不是必須實現(xiàn)的,但是如果有實現(xiàn),就會改變類的屬性。

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

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

      這個意思是,這些是可選的。比如我門要一個更好的方法,我們就會申明一個這樣的類別去實現(xiàn)。然后你在后期可以直接使用這些更好的方法。

      這么看,總覺得類別這玩意兒有點像協(xié)議的可選協(xié)議。"

      現(xiàn)在來看,其實protocal已經(jīng)開始對兩者都統(tǒng)一和規(guī)范起來操作,因為資料中說“非正式協(xié)議使用interface修飾“,

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

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

      5.What are KVO and KVC?

      答案:kvc:鍵 - 值編碼是一種間接訪問對象的屬性使用字符串來標(biāo)識屬性,而不是通過調(diào)用存取方法,直接或通過實例變量訪問的機(jī)制。

      很多情況下可以簡化程序代碼。apple文檔其實給了一個很好的例子。

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

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

      比如我自定義的一個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)用對象時,比如:[self valueForKey:@”someKey”]時,程序會自動試圖通過幾種不同的方式解析這個調(diào)用。首先查找對象是否帶有 someKey 這個方法,如果沒找到,會繼續(xù)查找對象是否帶有someKey這個實例變量(iVar),如果還沒有找到,程序會繼續(xù)試圖調(diào)用 -(id) valueForUndefinedKey:這個方法。如果這個方法還是沒有被實現(xiàn)的話,程序會拋出一個NSUndefinedKeyException異常錯誤。

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

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

      來至cocoa,這個說法應(yīng)該挺有道理。

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

      可以按照kvc查找的邏輯理解,就說的過去了。

      6.What is purpose of delegates?

      代理的作用?

      答案:代理的目的是改變或傳遞控制鏈。允許一個類在某些特定時刻通知到其他類,而不需要獲取到那些類的指針。可以減少框架復(fù)雜度。

      另外一點,代理可以理解為java中的回調(diào)監(jiān)聽機(jī)制的一種類似。

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

      oc中可修改和不可以修改類型。

      答案:可修改不可修改的集合類。這個我個人簡單理解就是可動態(tài)添加修改和不可動態(tài)添加修改一樣。

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

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

      我們說的oc是動態(tài)運(yùn)行時語言是什么意思?

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

      這個問題其實淺涉及到兩個概念,運(yùn)行時和多態(tài)。

      簡單來說,運(yùn)行時機(jī)制使我們直到運(yùn)行時才去決定一個對象的類別,以及調(diào)用該類別對象指定方法。

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

      那人類屬于生物,豬也屬于生物,都繼承了life后,實現(xiàn)各自的eat,但是調(diào)用是我們只需調(diào)用各自的eat方法。

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

      因此也可以說,運(yùn)行時機(jī)制是多態(tài)的基礎(chǔ)?~~~

      9.what is difference between NSNotification and protocol?

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

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

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

      簡單來說,通知的話,它可以一對多,一條消息可以發(fā)送給多個消息接受者。

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

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

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

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

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

    iOS基礎(chǔ)問答面試題08-20

    HTML基礎(chǔ)練習(xí)題目10-12

    秘書資格考試基礎(chǔ)練習(xí)題07-21

    育嬰師考試基礎(chǔ)練習(xí)題10-15

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

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

    秘書資格考試基礎(chǔ)練習(xí)題(選擇)10-28

    計算機(jī)應(yīng)用基礎(chǔ)模擬練習(xí)題06-25

    最新計算機(jī)應(yīng)用基礎(chǔ)練習(xí)題06-19

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

    主站蜘蛛池模板: WWW国产精品内射老师| 欧洲精品久久久av无码电影| 久久精品无码专区免费| 国产麻豆精品久久一二三| 国产成人精品福利网站在线| 精品久久久久久国产潘金莲 | 男女男精品网站免费观看| 国产一成人精品福利网站| 国产精品无码无卡无需播放器| 人妻VA精品VA欧美VA| 影院无码人妻精品一区二区| 日韩精品久久久肉伦网站| 亚洲精品无码成人AAA片| 久久精品成人免费看| 91精品无码久久久久久五月天| 中文无码久久精品| 少妇精品久久久一区二区三区| 精品午夜国产人人福利| 午夜精品久久久久久| 国产一区二区三区精品视频| 亚洲精品网站在线观看不卡无广告| 91午夜精品亚洲一区二区三区| 日本aⅴ精品中文字幕| 四虎永久在线精品884aa下载| 国产精品看高国产精品不卡| 精品无码久久久久国产| 国产亚洲精品xxx| 国内精品久久久久久99| 国产午夜精品理论片| 久久精品国产亚洲AV无码娇色| 少妇人妻无码精品视频app| 国产精品户外野外| 国产精品久久久久久久久| 亚洲欧美精品AAAAAA片| 亚洲国产精品嫩草影院在线观看| 中文字幕日韩精品在线| 久久精品人人做人人爽97| 精品国产毛片一区二区无码| 久久99精品综合国产首页| 动漫精品专区一区二区三区不卡 | 香蕉依依精品视频在线播放|