1.Objective-C 有私有方法嗎?私有變量呢?如果沒有的話,有沒有什麼代替的方法?
Objective-C 中的方法分爲:靜態方法和實例方法
沒有私有方法,有私有變量,所有實例變量默認都是私有的,所有實例方法默認都是公有的
私有方法可以用 category 和 extension 來代替
2. #import、#include和@class有什麼區別?
@class一般用於頭文件中需要聲明該類的某個實例變量的時候用到,它只是聲明瞭一個類名,關於這個類的內部實現都沒有告訴編譯器,在m文件中還是需要使用#import。 而#import比起#include的好處就是不會引起交叉編譯。
3.談談你對MVC的理解?爲什麼要用MVC?在Cocoa中MVC是怎麼實現的?你還熟悉其他的OC設計模式或別的設計模式嗎?
MVC就是Model-View-Controller的縮寫,M指的是業務模型,V指的是用戶頁面,C指的是控制器。MVC是架構模式,是講M和 V的代碼分離,從而使同那個一個程序可以使用不同的表現形式。 M:表示數據和業務規則,V是用戶看到的並與之交互的頁面,C是接受用戶的輸入並調用M和V取完成用戶需求的。
單例模式,Delegate模式,KVC模式,消息通知模式,Target/Action模式
4. 如何監測系統鍵盤的彈出?
UIKeyboardDidShowNotification(鍵盤彈出通知)
UIKeyboardWillHideNotification (鍵盤消失通知)
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector() name:UIKeyboardWillShowNotification object:nil];
5.舉出5個以上你所熟悉的iOS SDK庫有哪些和第三方庫有哪些?
AFNetworking,SDWebimage,ShareSDK,MJRefresh,FMDB,MBProgressHUD
6.如何將產品進行多語言發佈?
在工程InfoPlist.strings中添加發布時需要的語言,並在Info.plist中添加新的屬性Application has localized display name 設置類型爲boolean並將value設置爲YES,創建".strings"文件進行字符串 圖片和其他文件的多語言處理
7.如何將敏感字變成** ?
// 存取敏感字的數組 NSMutableArray *array = [[NSMutableArray alloc]init]; // 向敏感字數組裏添加元素 NSString *element1 = @"敏感字"; NSString *element2 = @"我"; [array addObject:element1]; [array addObject:element2]; // 要判斷的字符串 NSMutableString *str = [[NSMutableString alloc]initWithString:@"我是敏感字"]; for (int i = 0; i < array.count; i++) { // 敏感字替代字符串 NSMutableString *replaceString = [[NSMutableString alloc]init]; // 判斷字符串是否包含指定字符串,返回位置和長度 NSRange range = [str rangeOfString:array[i]]; for (int j = 0; j<range.length; j++) { [replaceString appendString:@"*"]; } // 某個範圍用字符代替 [str replaceCharactersInRange:range withString:replaceString]; } NSLog(@"%@",str);
8.objc中的減號與加號代表什麼?
前置加號(+)的方法爲類方法 這類方法是可以直接用類名來調用的。它的作用是創建一個實例,有人把它稱爲創建實例的工廠方法
前置減號(-)的方法爲實例方法,必須使用類的實例纔可以調用
9. 單例目的是什麼?
目的:封裝一個共享的資源 提供一個固定的實例創建的方法 提供一個標準的實例訪問接口,節省內存。
10、 說說響應鏈
首先要明確的是:在IOS中,有響應者鏈對事件進行響應,所有的響應類都是UIResponder的子類,響應者鏈是由不同的對象組成的層次結構,其中的每一個對象將依次獲得響應事件消息的機會。
響應者鏈的過程:
當事件發生的時候,響應鏈首先被髮給第一個響應者(往往是事件發生的視圖,也就是用戶觸摸屏幕的地方)事件將沿着響應者鏈一直傳遞下去,直到被接受並處理。一般來說,第一響應是視圖對象或者其子類,當其被觸摸後事件就交它處理,如果它不處理,事件就會被傳遞給視圖控制器UIViewController(如果存在)然後是它的父視圖,以此類推直到頂層視圖。接下來會沿着頂層視圖(top View)到窗口(UIWidow對象)再到程序的UIApplication對象 ,如果整個過程沒有響應這個事件,則該事件被丟棄。一般情況下,在響應者鏈中只要有對象處理事件,事件就會傳遞。