中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      ios面試筆試題及答案

      時間:2024-10-16 20:07:52 面試筆試 我要投稿
      • 相關推薦

      ios面試筆試題及答案

        iOS是由蘋果公司為移動設備所開發(fā)的操作系統(tǒng),支持的設備包括iPhone、iPod touch、iPad、Apple TV,我們一起看看下面的ios面試筆試題及答案吧!

      ios面試筆試題及答案

        ios面試筆試題及答案

        設計模式是什么? 你知道哪些設計模式,并簡要敘述?

        設計模式是一種編碼經(jīng)驗,就是用比較成熟的邏輯去處理某一種類型的事情。

        1). MVC模式:Model View Control,把模型 視圖 控制器 層進行解耦合編寫。

        2). MVVM模式:Model View ViewModel 把模型 視圖 業(yè)務邏輯 層進行解耦和編寫。

        3). 單例模式:通過static關鍵詞,聲明全局變量。在整個進程運行期間只會被賦值一次。

        4). 觀察者模式:KVO是典型的通知模式,觀察某個屬性的狀態(tài),狀態(tài)發(fā)生變化時通知觀察者。

        5). 委托模式:代理+協(xié)議的組合。實現(xiàn)1對1的反向傳值操作。

        6). 工廠模式:通過一個類方法,批量的根據(jù)已有模板生產(chǎn)對象。

        MVC 和 MVVM 的區(qū)別

        1). MVVM是對胖模型進行的拆分,其本質(zhì)是給控制器減負,將一些弱業(yè)務邏輯放到VM中去處理。

        2). MVC是一切設計的基礎,所有新的設計模式都是基于MVC進行的改進。

        #import跟 #include 有什么區(qū)別,@class呢,#import<> 跟 #import””有什么區(qū)別?

        答:

        1). #import是Objective-C導入頭文件的關鍵字,#include是C/C++導入頭文件的關鍵字,使用#import頭文件會自動只導入一次,不會重復導入。

        2). @class告訴編譯器某個類的聲明,當執(zhí)行時,才去查看類的實現(xiàn)文件,可以解決頭文件的相互包含。

        3). #import<>用來包含系統(tǒng)的頭文件,#import””用來包含用戶頭文件。

        frame 和 bounds 有什么不同?

        frame指的是:該view在父view坐標系統(tǒng)中的位置和大小。(參照點是父view的坐標系統(tǒng))

        bounds指的是:該view在本身坐標系統(tǒng)中的位置和大小。(參照點是本身坐標系統(tǒng))

        Objective-C的類可以多重繼承么?可以實現(xiàn)多個接口么?Category是什么?重寫一個類的方式用繼承好還是分類好?為什么?

        答:Objective-C的類不可以多重繼承;可以實現(xiàn)多個接口(協(xié)議);Category是類別;一般情況用分類好,用Category去重寫類的方法,僅對本Category有效,不會影響到其他類與原有類的關系。

        @property 的本質(zhì)是什么?ivar、getter、setter 是如何生成并添加到這個類中的

        @property 的本質(zhì)是什么?

        @property = ivar + getter + setter;

        “屬性” (property)有兩大概念:ivar(實例變量)、getter+setter(存取方法)

        “屬性” (property)作為 Objective-C 的一項特性,主要的作用就在于封裝對象中的數(shù)據(jù)。 Objective-C 對象通常會把其所需要的數(shù)據(jù)保存為各種實例變量。實例變量一般通過“存取方法”(access method)來訪問。其中,“獲取方法” (getter)用于讀取變量值,而“設置方法” (setter)用于寫入變量值。

        @property中有哪些屬性關鍵字?/ @property 后面可以有哪些修飾符?

        屬性可以擁有的.特質(zhì)分為四類:

        1.原子性--- nonatomic 特質(zhì)

        2.讀/寫權限---readwrite(讀寫)、readonly (只讀)

        3.內(nèi)存管理語義---assign、strong、 weak、unsafe_unretained、copy

        4.方法名---getter=、setter=

        5.不常用的:nonnull,null_resettable,nullable

        屬性關鍵字 readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那種情況下用?

        答:

        1). readwrite 是可讀可寫特性。需要生成getter方法和setter方法。

        2). readonly 是只讀特性。只會生成getter方法,不會生成setter方法,不希望屬性在類外改變。

        3). assign 是賦值特性。setter方法將傳入?yún)?shù)賦值給實例變量;僅設置變量時,assign用于基本數(shù)據(jù)類型。

        4). retain(MRC)/strong(ARC) 表示持有特性。setter方法將傳入?yún)?shù)先保留,再賦值,傳入?yún)?shù)的retaincount會+1。

        5). copy 表示拷貝特性。setter方法將傳入對象復制一份,需要完全一份新的變量時。

        6). nonatomic 非原子操作。決定編譯器生成的setter和getter方法是否是原子操作,atomic表示多線程安全,一般使用nonatomic,效率高。

        什么情況使用 weak 關鍵字,相比 assign 有什么不同?

        1.在 ARC 中,在有可能出現(xiàn)循環(huán)引用的時候,往往要通過讓其中一端使用 weak 來解決,比如: delegate 代理屬性。

        2.自身已經(jīng)對它進行一次強引用,沒有必要再強引用一次,此時也會使用 weak,自定義 IBOutlet 控件屬性一般也使用 weak;當然,也可以使用strong。

        IBOutlet連出來的視圖屬性為什么可以被設置成weak?

        因為父控件的subViews數(shù)組已經(jīng)對它有一個強引用。

        不同點:

        assign 可以用非 OC 對象,而 weak 必須用于 OC 對象。

        weak 表明該屬性定義了一種“非擁有關系”。在屬性所指的對象銷毀時,屬性值會自動清空(nil)。

        怎么用 copy 關鍵字?

        用途:

        1. NSString、NSArray、NSDictionary 等等經(jīng)常使用copy關鍵字,是因為他們有對應的可變類型:NSMutableString、NSMutableArray、NSMutableDictionary;

        2. block 也經(jīng)常使用 copy 關鍵字。

        說明:

        block 使用 copy 是從 MRC 遺留下來的“傳統(tǒng)”,在 MRC 中,方法內(nèi)部的 block 是在棧區(qū)的,使用 copy 可以把它放到堆區(qū).在 ARC 中寫不寫都行:對于 block 使用 copy 還是 strong 效果是一樣的,但寫上 copy 也無傷大雅,還能時刻提醒我們:編譯器自動對 block 進行了 copy 操作。如果不寫 copy ,該類的調(diào)用者有可能會忘記或者根本不知道“編譯器會自動對 block 進行了 copy 操作”,他們有可能會在調(diào)用之前自行拷貝屬性值。這種操作多余而低效。

        用@property聲明的 NSString / NSArray / NSDictionary 經(jīng)常使用 copy 關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?

        答:用 @property 聲明 NSString、NSArray、NSDictionary 經(jīng)常使用 copy 關鍵字,是因為他們有對應的可變類型:NSMutableString、NSMutableArray、NSMutableDictionary,他們之間可能進行賦值操作(就是把可變的賦值給不可變的),為確保對象中的字符串值不會無意間變動,應該在設置新屬性值時拷貝一份。

        1. 因為父類指針可以指向子類對象,使用 copy 的目的是為了讓本對象的屬性不受外界影響,使用 copy 無論給我傳入是一個可變對象還是不可對象,我本身持有的就是一個不可變的副本。

        2. 如果我們使用是 strong ,那么這個屬性就有可能指向一個可變對象,如果這個可變對象在外部被修改了,那么會影響該屬性。

        //總結:使用copy的目的是,防止把可變類型的對象賦值給不可變類型的對象時,可變類型對象的值發(fā)送變化會無意間篡改不可變類型對象原來的值。

        淺拷貝和深拷貝的區(qū)別?

        答:

        淺拷貝:只復制指向?qū)ο蟮闹羔槪粡椭埔脤ο蟊旧怼?/p>

        深拷貝:復制引用對象本身。內(nèi)存中存在了兩份獨立對象本身,當修改A時,A_copy不變。

        系統(tǒng)對象的 copy 與 mutableCopy 方法

        不管是集合類對象(NSArray、NSDictionary、NSSet ... 之類的對象),還是非集合類對象(NSString, NSNumber ... 之類的對象),接收到copy和mutableCopy消息時,都遵循以下準則:

        1. copy 返回的是不可變對象(immutableObject);如果用copy返回值調(diào)用mutable對象的方法就會crash。

        2. mutableCopy 返回的是可變對象(mutableObject)。

        一、非集合類對象的copy與mutableCopy

        在非集合類對象中,對不可變對象進行copy操作,是指針復制,mutableCopy操作是內(nèi)容復制;

        對可變對象進行copy和mutableCopy都是內(nèi)容復制。用代碼簡單表示如下:

        二、集合類對象的copy與mutableCopy (同上)

        在集合類對象中,對不可變對象進行copy操作,是指針復制,mutableCopy操作是內(nèi)容復制;

        對可變對象進行copy和mutableCopy都是內(nèi)容復制。但是:集合對象的內(nèi)容復制僅限于對象本身,對集合內(nèi)的對象元素仍然是指針復制。(即單層內(nèi)容復制)

      【ios面試筆試題及答案】相關文章:

      醫(yī)院面試試題及答案02-18

      經(jīng)典面試題 及答案分析11-20

      英語面試試題及答案02-18

      外企面試的經(jīng)典試題及答案02-18

      電工面試題目及答案?02-23

      2016競聘面試題及答案11-30

      面試熱點:精準扶貧面試試題及答案03-19

      醫(yī)生面試題目及答案03-25

      面試問題、筆試試題、答案11-19

      如何應對無答案面試題11-20

      主站蜘蛛池模板: 无码熟妇人妻av在线c0930| 日韩中文字幕三级有码区| 亚洲国产一区二区精品在线观看| 日本一区二区不卡超清在线播放| 漳浦县| 国产精品欧美亚洲韩国日本| 午夜精品久视频在线观看| 久草热这里只有精品在线| 色播在线永久免费视频网站| 大埔区| 亚洲综合中文字幕久久| 久久精品国产成人av| 亚洲成人精品一区免费 | 国产亚洲精品综合91| 舞阳县| 马龙县| 日本草逼视频免费观看| 精品国产高清a毛片| 亚洲精品精品日本日本| 亚洲天堂免费av在线观看| 亚洲αv在线精品糸列| 91精品一区二区三区蜜桃| 武宁县| 五家渠市| 天祝| 横山县| 宜川县| 安泽县| 国产女主播福利一二区| 厦门市| 崇礼县| 日韩精品夜色二区91久久久| 开心五月婷婷丁香综合| 阿拉善盟| 红桥区| 国产精品nv在线观看| 18禁黄无遮挡免费网站| 亚洲一区二区久久青草| 亚洲精品国产老熟女久久| 中文字幕av日韩精品一区| 亚洲AV无码日韩综合欧亚|