<button id="u2w23"></button>

<tbody id="u2w23"><track id="u2w23"></track></tbody><dd id="u2w23"><track id="u2w23"></track></dd><button id="u2w23"><acronym id="u2w23"></acronym></button> <tbody id="u2w23"><noscript id="u2w23"></noscript></tbody>

  • <button id="u2w23"></button><li id="u2w23"><acronym id="u2w23"><cite id="u2w23"></cite></acronym></li>

  • ?

    12道iOS常見面試試題及詳解

    作者:達內 更新時間:2014-06-17 12:04 來源:未知 點擊:
    12道ios常見面試試題及詳解。

    1. Object C中創建線程的方法是什么?如果在主線程中執行代碼,方法是什么?如果想延時執行代碼、方法又是什么?
           解答:線程創建有三種方法:使用NSThread創建、使用 GCD的dispatch、使用子類化的NSOperation,然后將其加入NSOperationQueue;在主線程執行代碼,方法是 performSelectorOnMainThread,如果想延時執行代碼可以用performSelector:onThread:withObject:waitUntilDone:
           2.描述一下iOS SDK中如何實現MVC的開發模式
           解答:MVC是模型、試圖、控制開發模式,對于iOS SDK,所有的View都是視圖層的,它應該獨立于模型層,由視圖控制層來控制。所有的用戶數據都是模型層,它應該獨立于視圖。所有的ViewController都是控制層,由它負責控制視圖,訪問模型數據。
           3.淺復制和深復制的區別?
           解答:淺層復制:只復制指向對象的指針,而不復制引用對象本身。深層復制:復制引用對象本身。意思就是說我有個A對象,復制一份后得到A_copy對象后,對于淺復制來說,A和A_copy指向的是同一個內存資源? ??復制的只不過是是一個指針,對象本身資源還是只有一份,那如果我們對A_copy執行了修改操作,那么發現A引用的對象同樣被修改,這其實違背了我們復制拷貝的一個思想。深復制就好理解了,內存中存在了兩份獨立對象本身。用網上一哥們通俗的話將就是:淺復制好比你和你的影子,你完蛋,你的影子也完蛋深復制好比你和你的克隆人,你完蛋,你的克隆人還活著。
           4.類別的作用?繼承和類別在實現中有何區別?
           解答:category 可以在不獲悉,不改變原來代碼的情況下往里面添加新的方法,只能添加,不能刪除修改。并且如果類別和原來類中的方法產生名稱沖突,則類別將覆蓋原來的方法,因為類別具有更高的優先級。
           類別主要有3個作用:
           (1)將類的實現分散到多個不同文件或多個不同框架中。
           (2)創建對私有方法的前向引用。
           (3)向對象添加非正式協議。
           繼承可以增加,修改或者刪除方法,并且可以增加屬性。
           5.類別和類擴展的區別。
           解答:category和extensions的不同在于 后者可以添加屬性。另外后者添加的方法是必須要實現的。extensions可以認為是一個私有的Category。
           6.談談 KVO and KVC?
           解答:kvc:鍵 - 值編碼是一種間接訪問對象的屬性使用字符串來標識屬性,而不是通過調用存取方法,直接或通過實例變量訪問的機制。很多情況下可以簡化程序代碼。apple文檔其實給了一個很好的例子。
           kvo:鍵值觀察機制,他提供了觀察某一屬性變化的方法,極大的簡化了代碼。具體用看到嗯哼用到過的一個地方是對于按鈕點擊變化狀態的的監控。
           7.frame和bounds有什么不同?
           解答:frame指的是:該view在父view坐標系統中的位置和大小。(參照點是父親的坐標系統)bounds指的是:該view在本身坐標系統中 的位置和大小。(參照點是本身坐標系統)
           8.Object-c的類可以多重繼承么?可以實現多個接口么?重寫一個類的方式用繼承好還是分類好?為什么?
           解答:Objective-c只支持單繼承,如果要實現多繼承的話,可以通過類別和協議的方式來實現,cocoa 中所有的類都是NSObject 的子類,多繼承在這里是用protocol 委托代理 來實現的。
           9.MVC是什么?
           解答:MVC設計模式考慮三種對象:模型對象、視圖對象、和控制器對象。模型對象代表特別的知識和專業技能,它們負責保有應用程序的數據和定義操作數據的邏輯。視圖對象知道如何顯示應用程序的模型數據,而且可能允許用戶對其進行編輯。控制器對象是應用程序的視圖對象和模型對象之間的協調者。 
           10.自動釋放池跟GC(垃圾回收)有什么區別?iPhone上有GC么?[pool release]和[pool drain]有什么區別?
           解答:iPhone上沒有GC。iPhone開發的時候沒有垃圾回收機制。在垃圾回收環境中,release是一個空操作。因此,NSAutoreleasePool提供了drain方法,在引用計數環境中,該方法的作用等同于調用release,但在垃圾回收環境中,它會觸發垃圾回收(如果自上次垃圾回收以來分配的內存大于當前的閾值)。因此,在通常情況下,您應該使用drain而不是release來銷毀自動釋放池。 
           11. 線程與進程的區別和聯系?
           解答:進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的并發性。程和線程的主要差別在于它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個 進程崩潰后,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對于一些要求同時進行并且又要共享某些變量的并發操作,只能用線程,不能用進程。
           12.在一個對象的方法里面: self.name =“object”; 和 name=”object” 有什么不同嗎?
           解答:self.name ="object"會調用對象的setName()方法,name ="object"會直接把object賦值給當前對象的name 屬性。并且self.name 這樣retainCount會加1,而name就不會。

    標簽:

    相關閱讀

    最新開班信息

    3G-IOS軟件工程師就業班
    北京潘家園中心 開課日期:9月29日
    3G-IOS軟件工程師就業班
    北京潘家園中心 開課日期:9月29日
    3G-IOS軟件工程師周末班
    北京潘家園中心 開課日期:9月29日
    3G-IOS軟件工程師周末班
    北京潘家園中心 開課日期:9月29日
    大香蕉99精品3线在线观看视频,亚洲欧美AV中文日韩二区91哥精品 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>