激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

ios面試筆試題及答案

時(shí)間:2024-10-16 20:07:52 面試筆試 我要投稿
  • 相關(guān)推薦

ios面試筆試題及答案

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

ios面試筆試題及答案

  ios面試筆試題及答案

  設計模式是什么? 你知道哪些設計模式,并簡(jiǎn)要敘述?

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

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

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

  3). 單例模式:通過(guò)static關(guān)鍵詞,聲明全局變量。在整個(gè)進(jìn)程運行期間只會(huì )被賦值一次。

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

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

  6). 工廠(chǎng)模式:通過(guò)一個(gè)類(lèi)方法,批量的根據已有模板生產(chǎn)對象。

  MVC 和 MVVM 的區別

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

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

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

  答:

  1). #import是Objective-C導入頭文件的關(guān)鍵字,#include是C/C++導入頭文件的關(guān)鍵字,使用#import頭文件會(huì )自動(dòng)只導入一次,不會(huì )重復導入。

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

  3). #import<>用來(lái)包含系統的頭文件,#import””用來(lái)包含用戶(hù)頭文件。

  frame 和 bounds 有什么不同?

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

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

  Objective-C的類(lèi)可以多重繼承么?可以實(shí)現多個(gè)接口么?Category是什么?重寫(xiě)一個(gè)類(lèi)的方式用繼承好還是分類(lèi)好?為什么?

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

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

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

  @property = ivar + getter + setter;

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

  “屬性” (property)作為 Objective-C 的一項特性,主要的作用就在于封裝對象中的數據。 Objective-C 對象通常會(huì )把其所需要的數據保存為各種實(shí)例變量。實(shí)例變量一般通過(guò)“存取方法”(access method)來(lái)訪(fǎng)問(wèn)。其中,“獲取方法” (getter)用于讀取變量值,而“設置方法” (setter)用于寫(xiě)入變量值。

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

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

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

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

  3.內存管理語(yǔ)義---assign、strong、 weak、unsafe_unretained、copy

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

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

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

  答:

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

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

  3). assign 是賦值特性。setter方法將傳入參數賦值給實(shí)例變量;僅設置變量時(shí),assign用于基本數據類(lèi)型。

  4). retain(MRC)/strong(ARC) 表示持有特性。setter方法將傳入參數先保留,再賦值,傳入參數的retaincount會(huì )+1。

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

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

  什么情況使用 weak 關(guān)鍵字,相比 assign 有什么不同?

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

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

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

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

  不同點(diǎn):

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

  weak 表明該屬性定義了一種“非擁有關(guān)系”。在屬性所指的對象銷(xiāo)毀時(shí),屬性值會(huì )自動(dòng)清空(nil)。

  怎么用 copy 關(guān)鍵字?

  用途:

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

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

  說(shuō)明:

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

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

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

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

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

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

  淺拷貝和深拷貝的區別?

  答:

  淺拷貝:只復制指向對象的指針,而不復制引用對象本身。

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

  系統對象的 copy 與 mutableCopy 方法

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

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

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

  一、非集合類(lèi)對象的copy與mutableCopy

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

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

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

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

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

【ios面試筆試題及答案】相關(guān)文章:

醫院面試試題及答案02-18

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

英語(yǔ)面試試題及答案02-18

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

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

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

面試熱點(diǎn):精準扶貧面試試題及答案03-19

醫生面試題目及答案03-25

面試問(wèn)題、筆試試題、答案11-19

如何應對無(wú)答案面試題11-20

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频