一、筆試常用基礎問題
1.#import 和 #include 的區(qū)別 @class吁朦?
@class一般用于頭文件中需要聲明該類的某個實例變量的時候用到柒室,在m文件中還是需要使用 #import
2.@property的作用
@property是一個屬性訪問聲明,支持重寫set 和 get
3.readwrite逗宜,readonly雄右,assign,retain纺讲,copy擂仍,nonatomic屬性的作用
(1)readwrite 是可讀可寫特性;需要生成getter方法和setter方法時
(2)readonly 是只讀特性 ?只會生成getter方法 不會生成setter方法?;不希望屬性在類外改變
(3)assign 是賦值特性熬甚,setter方法將傳入?yún)?shù)賦值給實例變量逢渔;僅設置變量時;
(4)retain 表示持有特性乡括,setter方法將傳入?yún)?shù)先保留肃廓,再賦值,傳入?yún)?shù)的retaincount會+1;
(5)copy 表示拷貝特性诲泌,setter方法將傳入對象復制一份盲赊;需要完全一份新的變量時。
(6)nonatomic 非原子操作敷扫,決定編譯器生成的setter getter是否是原子操作哀蘑,atomic表示多線程安全,一般使用nonatomic
4.在一個對象的方法里面:self.name=“object”;和name =”object”有什么不同嗎?
self.name =”object”:會調用對象的setName()方法递礼;
name = “object”:會直接把object賦值給當前對象的name屬性惨险。
5.請簡述self.name= nil的機制,以及與[namerelease]的區(qū)別脊髓?
self.name =nil;? //使用nil參數(shù)調用setName:方法
[name release]生成的訪問器將自動釋放以前的name對象
6.請簡要說明viewDidLoad和viewDidUnload何時調用
viewDidLoad在view從nib文件初始化時調用,loadView在controller的view為nil時調用栅受。此方法在編程實現(xiàn)view時調用将硝,view控制器默認會注冊memory warning notification,當view controller的任何view沒有用的時候屏镊,viewDidUnload會被調用依疼,在這里實現(xiàn)將retain的view release,如果是retain的IBOutlet view屬性則不要在這里release而芥,IBOutlet會負責release律罢。
7.static的作用
(1)函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量棍丐,該變量的內(nèi)存只被分配一次误辑,
因此其值在下次調用時仍維持上次的值;
(2)在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問歌逢,但不能被模塊外其它函數(shù)訪問巾钉;
(3)在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調用,這個函數(shù)的使用范圍被限制在聲明
它的模塊內(nèi)秘案;
(4)在類中的static成員變量屬于整個類所擁有砰苍,對類的所有對象只有一份拷貝;
(5)在類中的static成員函數(shù)屬于整個類所擁有阱高,這個函數(shù)不接收this指針赚导,因而只能訪問類的static成員變量。
8.在Obj-c中有沒有私有方法赤惊?私有變量吼旧?一般采用什么方法實現(xiàn)?
objective-c –類里面的方法只有兩種,靜態(tài)方法和實例方法.這似乎就不是完整的面向對象了,按照OO的原則就是一個對象只暴露有用的東西.如果沒有了私有方法的話,對于一些小范圍的代碼重用就不那么順手了.在類里面聲名一個私有方法
@interfaceController : NSObject {NSString *something; }
+(void)thisIsAStaticMethod;
-(void)thisIsAnInstanceMethod;
@end
@interfaceController (private)
-(void)thisIsAPrivateMethod;
@end
@private可以用來修飾私有變量
在Objective‐C中荐捻,所有實例變量默認都是私有的黍少,所有實例方法默認都是公有的
9.自動釋放池是什么,如何工作
當您向一個對象發(fā)送一個autorelease消息時,Cocoa就會將該對象的一個引用放入到最新的自動釋放池处面。它仍然是個正當?shù)膶ο蟪е茫虼俗詣俞尫懦囟x的作用域內(nèi)的其它對象可以向它發(fā)送消息。當程序執(zhí)行到作用域結束的位置時魂角,自動釋放池就會被釋放昵济,池中的所有對象也就被釋放。
(1). ojc-c是通過一種”referring
counting”(引用計數(shù))的方式來管理內(nèi)存的,對象在開始分配內(nèi)存(alloc)的時候引用計數(shù)為一,以后每當碰到有copy,retain的時候引用計數(shù)都會加一,每當碰到release和autorelease的時候引用計數(shù)就會減一,如果此對象的計數(shù)變?yōu)榱?,就會被系統(tǒng)銷毀.
(2). NSAutoreleasePool就是用來做引用計數(shù)的管理工作的,這個東西一般不用你管的.
(3). autorelease和release沒什么區(qū)別,只是引用計數(shù)減一的時機不同而已,autorelease會在對象的使用真正結束的時候才做引用計數(shù)減一.
10.ViewController的loadView, viewDidLoad,viewDidUnload分別是在什么時候調用的?在自定義ViewController的時候這幾個函數(shù)里面應該做什么工作访忿?
viewDidLoad在view從nib文件初始化時調用瞧栗,loadView在controller的view為nil時調用。此方法在編程實現(xiàn)view時調用,view控制器默認會注冊memory warning notification,當view controller的任何view沒有用的時候海铆,viewDidUnload會被調用迹恐,在這里實現(xiàn)將retain的view release,如果是retain的IBOutlet view屬性則不要在這里release,IBOutlet會負責release。
11.淺復制和深復制的區(qū)別卧斟?//淺拷貝和深拷貝
淺層復制(copy):只復制指向對象的指針殴边,而不復制引用對象本身。//通過對象的指針來訪問這個對象
深層復制(mutableCopy):復制引用對象本身意思就是有個A對象珍语,復制一份后得到A_copy對象后锤岸,對于淺復制來說,A和A_copy指向的是同一個內(nèi)存資源板乙,復制的只不過是是一個指針是偷,對象本身資源還是只有一份,那如果我們對A_copy執(zhí)行了修改操作,那么發(fā)現(xiàn)A引用的對象同樣被修改募逞,這其實違背了我們復制拷貝的一個思想蛋铆。深復制就好理解了,內(nèi)存中存在了兩份獨立對象本身。//當修改A時凡辱,A copy不變戒职。
12.frame和bounds有什么不同?
答案:frame指的是:該view在父view坐標系統(tǒng)中的位置和大小透乾。(參照點是父親的坐標系統(tǒng))//frame:框架洪燥、結構
bounds指的是:該view在本身坐標系統(tǒng)中的位置和大小。(參照點是本身坐標系統(tǒng))//bounds:界限
13.HTTP協(xié)議中乳乌,POST和GET的區(qū)別是什么捧韵?
(1).GET方法
GET方法提交數(shù)據(jù)不安全,數(shù)據(jù)置于請求行汉操,客戶端地址欄可見;
GET方法提交的數(shù)據(jù)大小有限
GET方法不可以設置書簽
(2).POST方法
POST方法提交數(shù)據(jù)安全再来,數(shù)據(jù)置于消息主體內(nèi),客戶端不可見
POST方法提交的數(shù)據(jù)大小沒有限制
POST方法可以設置書簽
14.關于多態(tài)性
多態(tài):不同對象以自己的方式響應相同的消息的能力叫做多態(tài)磷瘤。
15.對于單例的理解
基本能用熟悉的語言寫出一個單例芒篷,以及可以運用到的場景或是你編程中碰到過運用的此種模式的框架類等。進一步點采缚,考慮下如何在多線程訪問單例時的安全性针炉。保證數(shù)據(jù)的唯一性,已經(jīng)全局性扳抽,其內(nèi)存是靜態(tài)空間篡帕,隨著程序的推出而釋放殖侵。
Demo:
??? static Singleton* _instance = nil;
??? + (instancetype)? shareInstance
??? {
??????? static dispatch_once_t onceToken ;
??????? dispatch_once(&onceToken, ^{
??????? _instance = [[self alloc] init] ;
??????? }) ;
??????? return _instance;
??? }
16.Object-c的類可以多重繼承么?可以實現(xiàn)多個接口么镰烧?重寫一個類的方式用繼承好還是分類好拢军?為什么?
Objective-c 只支持單繼承怔鳖,如果要實現(xiàn)多繼承的話茉唉,可以通過類別和協(xié)議的方式來實現(xiàn), cocoa 中所有的類都是 NSObject 的子類败砂,多繼承在這里是用 protocol 委托代理來實現(xiàn)的赌渣。
17.線程與進程的區(qū)別和聯(lián)系?
進程和線程都是由操作系統(tǒng)所體會的程序運行的基本單元,系統(tǒng)利用該基本單元實現(xiàn)系統(tǒng)對應用的并發(fā)性昌犹。進程和線程的主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進程有獨立的地址空間览芳,一個進程崩潰后斜姥,在保護模式下不會對其它進程產(chǎn)生影響,而線程只是一個進程中的不同執(zhí)行路徑沧竟。線程有自己的堆棧和局部變量铸敏,但線程之間沒有單獨的地址空間,一個線程死掉就等于整個進程死掉悟泵,所以多進程的程序要比多線程的程序健壯杈笔,但在進程切換時,耗費資源較大糕非,效率要差一些蒙具。但對于一些要求同時進行并且又要共享某些變量的并發(fā)操作,只能用線程朽肥,不能用進程禁筏。
18.講述一下ios的mvc開發(fā)模式
答:m:model,數(shù)據(jù)處理衡招;? v : view,視圖展示篱昔;?? c :controller,控制器(model與view之間的協(xié)調者)。
(1)Model和View永遠不能相互通信始腾,只能通過Controller傳遞州刽。
(2)Controller可以直接與Model對話(讀寫調用Model),Model通過Notification和KVO機制與Controller間接通信浪箭。
(3)Controller可以直接與View對話穗椅,通過outlet,直接操作View,outlet直接對應到View中的控件,View通過action向Controller報告事件的發(fā)生(如用戶Touch我了)。Controller是View的直接數(shù)據(jù)源(數(shù)據(jù)很可能是Controller從Model中取得并經(jīng)過加工了)山林。Controller是View的代理(delegate),以同步View與Controller房待。
19.kvo與kvc
kvo 鍵值觀察? kvc 鍵值編碼
20.結構體和類的區(qū)別
(1)結構沒有無參構造函數(shù)
(2)結構不能被繼承
(3)結構是值類型,而類是引用類型
(4)結構在數(shù)據(jù)參數(shù)方面效率更高,簡單數(shù)組的應用中成本很低
()類在方法運算方面更有優(yōu)勢,在抽象多級別時最佳選擇
21.常見的object-c的數(shù)據(jù)類型有那些邢羔, 和C的基本數(shù)據(jù)類型有什么區(qū)別?如:NSInteger和int
object-c的數(shù)據(jù)類型有NSString桑孩,NSNumber拜鹤,NSArray,NSMutableArray流椒,NSData等等敏簿,這些都是class,創(chuàng)建后便是對象宣虾,而C語言的基本數(shù)據(jù)類型int饮亏,只是一定字節(jié)的內(nèi)存空間扮碧,用于存放數(shù)值;NSInteger是基本數(shù)據(jù)類型,并不是NSNumber的子類能扒,當然也不是NSObject的子類。NSInteger是基本數(shù)據(jù)類型Int或者Long的別名(NSInteger的定義typedef long NSInteger)芬膝,它的區(qū)別在于绒尊,NSInteger會根據(jù)系統(tǒng)是32位還是64位來決定是本身是int還是Long。
22.簡單介紹下NSURLConnection類及 + sendSynchronousRequest:returningResponse:error:與– initWithRequest:delegate:兩個方法的區(qū)別甫菠?
答案:NSURLConnection主要用于網(wǎng)絡訪問挠铲,其中+?sendSynchronousRequest:returningResponse:error:是同步訪問數(shù)據(jù),即當前線程會阻塞寂诱,并等待request的返回的response拂苹,而–?initWithRequest:delegate:使用的是異步加載,當其完成網(wǎng)絡訪問后痰洒,會通過delegate回到主線程瓢棒,并其委托的對象。
二带迟、技術面試題目
1音羞、objective-c 是所有對象間的交互是如何實現(xiàn)的?
在對象間交互中每個對象承擔的角色不同仓犬,但總的來說無非就是”數(shù)據(jù)的發(fā)送者”或”數(shù)據(jù)的接收者”兩種角色嗅绰,我們可以通過代理去進行通信,或者通過觀察者消息模式搀继,blocks窘面,appdelegagte 通過:代理協(xié)議”或者”通知中心”方式的實現(xiàn)能最大限度的降低兩交互對象之間的耦合,不錯的設計叽躯;
2.GCD和NSOperation的區(qū)別
(1)财边、GCD是一種輕量級的方法來實現(xiàn)多線程〉闫铮控制起來比較麻煩酣难,比如取消和暫停一個線程谍夭。
(2)、NSOperation和NSOperationQueue相對于GCD效率上要低一點憨募,他們是面向對象的方式紧索,從Mac OS X v10.6和iOS4開始,NSOperation底層也是用的GCD來實現(xiàn)的菜谣≈槠可以在多個操作中添加附屬,也可以重用操作尾膊,取消或者暫停媳危。NSOperation和KVO是兼容,也就是說冈敛,可以在NSOperation中使用KVO待笑,例如,你可以通過NSNotificationCenter去讓一個操作開始執(zhí)行抓谴。
(3)滋觉、NSOperation的使用方法
【1】、繼承NSOperation類
【2】齐邦、重寫“main”方法
【3】、在“main”方法中創(chuàng)建一個autoreleasepool
【4】第租、將自己的代碼放在autoreleasepool中
注意:創(chuàng)建自動釋放池的原因是措拇,你不能訪問主線程的自動釋放池,所以需要自己創(chuàng)建一個慎宾。
(4)丐吓、NSOperation的常用方法
【1】、start:開始方法趟据,當把NSOperation添加到NSOperationQueue中去后券犁,隊列會在操作中調用start方法。
【2】汹碱、addDependency粘衬,removeDependency:添加從屬性,刪除從屬性咳促,比如說有線程a稚新,b,如果操作a從屬于b跪腹,那么a會等到b結束后才開始執(zhí)行褂删。
【3】、setQueuePriority:設置線程的優(yōu)先級冲茸。例:[a setQueuePriority:NSOperationQueuePriorityVeryLow];一共有四個優(yōu)先級:NSOperationQueuePriorityLow屯阀,NSOperationQueuePriorityNormal缅帘,NSOperationQueuePriorityHigh,NSOperationQueuePriorityVeryHigh难衰。
當你添加一個操作到一個隊列時钦无,在對操作調用start之前,NSOperationQueue會瀏覽所有的操作召衔,具有較高優(yōu)先級的操作會優(yōu)先執(zhí)行铃诬,具有相同優(yōu)先級的操作會按照添加到隊列中順序執(zhí)行。
【4】苍凛、setCompletionBlock:設置回調方法趣席,當操作結束后,會調用設置的回調block醇蝴。這個block會在主線程中執(zhí)行宣肚。
3、objective-c中是如何實現(xiàn)線程同步的?
Mutexlock(互斥鎖)悠栓、NSCondition lock (條件鎖)消息傳送
4霉涨、什么是UDP和TCP的區(qū)別是什么?
TCP 的全稱是傳輸控制協(xié)議惭适,這種協(xié)議可以提供面向連接的笙瑟、可靠的、點到點的通信癞志。
UDP 的全稱是用戶數(shù)據(jù)包協(xié)議往枷。他可以提供非連接的不可靠的點懂啊多點的通信,是osi參考模型中一種無連接的傳輸層協(xié)議凄杯,提供面向事務的簡單的不可靠信息傳輸错洁,_IETF RFC 768 是UDP 的正式規(guī)范;
選擇何種協(xié)議戒突,看程序注重那個方面屯碴,可靠抑或快速。
5膊存、TCP/IP建立連接的過程导而?
在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務膝舅,采用三次握手建立連接嗡载;
第一次握手:建立連接時,客戶端發(fā)送連接請求到服務器仍稀,并進入SYN_SEND狀態(tài)洼滚,等待服務器確認;
第二次握手:服務器收到客戶端連接請求技潘,向客戶端發(fā)送允許連接應答遥巴,此時服務器進入SYN_RECV狀態(tài)千康;
第三次握手:客戶端收到服務器的允許連接應答,向服務器發(fā)送確認铲掐,客戶端和服務器進入通信狀態(tài)拾弃,完成三次握手。
(所謂的三次握手摆霉,就是要有三次連接信息的發(fā)送豪椿、接收過程。TCP連的建立需要進行三次連接信息的發(fā)送携栋、接收搭盾。)
6.動態(tài)綁定—在運行時確定要調用的方法
動態(tài)綁定將調用方法的確定也推遲到運行時。在編譯時婉支,方法的調用并不和代碼綁定 在一起鸯隅,只有在消實發(fā)送出來之后,才確定被調用的代碼向挖。通過動態(tài)類型和動態(tài)綁定技術蝌以,您的代碼每次執(zhí)行都可以得到不同的結果。運行時因子負責確定消息的接 收者和被調用的方法何之。 運行時的消息分發(fā)機制為動態(tài)綁定提供支持跟畅。當您向一個動態(tài)類型確定了的對象發(fā)送消息時,運行環(huán)境系統(tǒng)會通過接收者的isa指針定位對象的類溶推,并以此為起點 確定被調用的方法碍彭,方法和消息是動態(tài)綁定的。而且悼潭,您不必在Objective-C 代碼中做任何工作,就可以自動獲取動態(tài)綁定的好處舞箍。您在每次發(fā)送消息時舰褪,
特別是當消息的接收者是動態(tài)類型已經(jīng)確定的對象時,動態(tài)綁定就會例行而 透明地發(fā)生疏橄。
7.tableView 滑動卡的問題
從緩存中或者是從本地讀取圖片給UIImage的時候耗費的時間占拍。需要把操作放到子線程里面。
8.子線程里面加入NSTimer 的時候需要 手動添加NSRunloop? 否則不能循環(huán)捎迫。
9.在單例中創(chuàng)建數(shù)組應該注意些什么晃酒。
單利里面添加 NSMutableArray 的時候,防止多個地方對它同時便利和修改的話窄绒,需要加原子屬性贝次。并且用strong,彰导,蛔翅,并且寫一個遍歷和修改的方法敲茄。加上鎖。? Lock? UnLock
10.SDWebImage內(nèi)部實現(xiàn)過程
(1)入口 setImageWithURL:placeholderImage:options: 會先把 placeholderImage 顯示山析,然后 SDWebImageManager 根據(jù) URL 開始處理圖片堰燎。
(2)進入 SDWebImageManager-downloadWithURL:delegate:options:userInfo:,交給
(3)SDImageCache 從緩存查找圖片是否已經(jīng)下載 queryDiskCacheForKey:delegate:userInfo:.
(4)先從內(nèi)存圖片緩存查找是否有圖片笋轨,如果內(nèi)存中已經(jīng)有圖片緩存秆剪,SDImageCacheDelegate 回調 imageCache:didFindImage:forKey:userInfo: 到 SDWebImageManager。
(5)SDWebImageManagerDelegate 回調 webImageManager:didFinishWithImage: 到 UIImageView+WebCache 等前端展示圖片爵政。
(6)如果內(nèi)存緩存中沒有仅讽,生成 NSInvocationOperation 添加到隊列開始從硬盤查找圖片是否已經(jīng)緩存。
(7)根據(jù) URLKey 在硬盤緩存目錄下嘗試讀取圖片文件茂卦。這一步是在 NSOperation 進行的操作何什,所以回主線程進行結果回調 notifyDelegate:。
(8)如果上一操作從硬盤讀取到了圖片等龙,將圖片添加到內(nèi)存緩存中(如果空閑內(nèi)存過小处渣,會先清空內(nèi)存緩存)。SDImageCacheDelegate 回調 imageCache:didFindImage:forKey:userInfo:蛛砰。進而回調展示圖片罐栈。
(9)如果從硬盤緩存目錄讀取不到圖片,說明所有緩存都不存在該圖片泥畅,需要下載圖片荠诬,回調 imageCache:didNotFindImageForKey:userInfo:。
(10)共享或重新生成一個下載器 SDWebImageDownloader 開始下載圖片位仁。
(11)圖片下載由 NSURLConnection 來做柑贞,實現(xiàn)相關 delegate 來判斷圖片下載中、下載完成和下載失敗聂抢。
(12)connection:didReceiveData: 中利用 ImageIO 做了按圖片下載進度加載效果钧嘶。
(13)connectionDidFinishLoading: 數(shù)據(jù)下載完成后交給 SDWebImageDecoder 做圖片解碼處理。
(14)圖片解碼處理在一個 NSOperationQueue 完成琳疏,不會拖慢主線程 UI有决。如果有需要對下載的圖片進行二次處理,最好也在這里完成空盼,效率會好很多书幕。
(15)在主線程 notifyDelegateOnMainThreadWithInfo: 宣告解碼完成,imageDecoder:didFinishDecodingImage:userInfo: 回調給 SDWebImageDownloader揽趾。
(16)imageDownloader:didFinishWithImage: 回調給 SDWebImageManager 告知圖片下載完成台汇。
(17)通知所有的 downloadDelegates 下載完成,回調給需要的地方展示圖片。
(18)將圖片保存到 SDImageCache 中励七,內(nèi)存緩存和硬盤緩存同時保存智袭。寫文件到硬盤也在以單獨 NSInvocationOperation 完成,避免拖慢主線程掠抬。
(19)SDImageCache 在初始化的時候會注冊一些消息通知吼野,在內(nèi)存警告或退到后臺的時候清理內(nèi)存圖片緩存,應用結束的時候清理過期圖片两波。
(20)SDWI 也提供了 UIButton+WebCache 和 MKAnnotationView+WebCache瞳步,方便使用。
(21)SDWebImagePrefetcher 可以預先下載圖片腰奋,方便后續(xù)使用单起。
11.socket連接和http連接的區(qū)別
http連接:http連接就是所謂的短連接,即客戶端向服務器端發(fā)送一次請求劣坊,服務器端響應后連接即會斷掉嘀倒;
socket連接:socket連接就是所謂的長連接,理論上客戶端和服務器端一旦建立起連接將不會主動斷掉局冰;但是由于各種環(huán)境因素可能會是連接斷開测蘑,比如說:服務器端或客戶端主機down了,網(wǎng)絡故障康二,或者兩者之間長時間沒有數(shù)據(jù)傳輸碳胳,網(wǎng)絡防火墻可能會斷開該連接以釋放網(wǎng)絡資源。所以當一個socket連接中沒有數(shù)據(jù)的傳輸沫勿,那么為了維持連接需要發(fā)送心跳消息~~具體心跳消息格式是開發(fā)者自己定義的
12.如何用原生代碼實現(xiàn)斷點下載和斷點續(xù)傳
斷點續(xù)傳原理每次上傳是服務器返回進度標記挨约,客戶端根據(jù)進度獲取相對應的data上傳;斷點下載:本地有兩個文件夾产雹,一個臨時一個下載路徑诫惭,每次下載獲取數(shù)據(jù)時做一個標記,重新下載時配置http的請求頭蔓挖,再下載下對應位置的數(shù)據(jù)贝攒。
13.熟悉個別數(shù)據(jù)加密處理
MD5非對稱加密 DES、AES對稱性加密时甚、RSA非對稱加密。
三哈踱、冷門面試題目
1.請解釋一下Handoff是什么荒适,并簡述它是如何實現(xiàn)iOS、Mac/網(wǎng)頁應用互通的开镣。
handoff是蘋果在iOS8推出的一種不同設備直接的溝通軟件刀诬,開啟它之后,如果有用戶在同個網(wǎng)絡中收到某個電話,那么其iPad也會收到電話陕壹,假如現(xiàn)在你在使用iPad质欲,那么你就不必再去尋找你的iPhone,用iPad就可以接聽電話糠馆。
他是通過藍牙嘶伟,或wift之間來作為相互溝通的。
2.iOS擴展是指又碌?能否列舉一些熱門或常見的范例九昧?
擴展(Extension)是iOS 8中引入的一個非常重要的新特性。擴展讓app之間的數(shù)據(jù)交互成為可能毕匀。用戶可以在app中使用其他應用提供的功能铸鹰,而無需離開當前的應用。
在iOS 8系統(tǒng)之前皂岔,每一個app在物理上都是彼此獨立的蹋笼,app之間不能互訪彼此的私有數(shù)據(jù)。
而在引入擴展之后躁垛,其他app可以與擴展進行數(shù)據(jù)交換剖毯。基于安全和性能的考慮缤苫,每一個擴展運行在一個單獨的進程中速兔,它擁有自己的bundle, bundle后綴名是.appex活玲。擴展bundle必須包含在一個普通應用的bundle的內(nèi)部涣狗。
iOS 8系統(tǒng)有6個支持擴展的系統(tǒng)區(qū)域,分別是Today舒憾、Share镀钓、Action、Photo Editing镀迂、Storage Provider丁溅、Custom keyboard。支持擴展的系統(tǒng)區(qū)域也被稱為擴展點探遵。
3.請解釋一下iOS應用沙盒機制窟赏。
iOS應用程序只能在為該改程序創(chuàng)建的文件系統(tǒng)中讀取文件,不可以去其它地方訪問箱季,此區(qū)域被稱為沙盒涯穷。所有的非代碼文件都要保存在此,例如圖像藏雏,圖標拷况,聲音,映像,屬性列表赚瘦,文本文件等粟誓。而且,
每個應用程序都有自己的存儲空間
應用程序不能翻過自己的圍墻去訪問別的存儲空間的內(nèi)容
應用程序請求的數(shù)據(jù)都要通過權限檢測起意,假如不符合條件的話鹰服,不會被放行
4.響應鏈(Responder Chain)是什么?它是如何發(fā)揮作用的杜恰?
響應鏈是什么获诈,響應鏈是由響應者(Responder object)之間的touch消息傳遞以及檢測組成,我們也可以理解為響應鏈是由響應者組成心褐。
檢測到hit-test View后舔涎,此view擁有優(yōu)先處理事件的權利,如果view不能處理這個事件逗爹,事件就會沿著響應者鏈向下傳遞亡嫌,直到找到一個能處理該事件的view.
響應鏈的起始點是,hit-test view(起點)和UIApplication對象(終點)掘而。