iOS面試題五

1.Objective-C 有私有方法嗎?私有變量呢?若是沒有的話,有沒有什麼代替的方法?設計模式

Objective-C 中的方法分爲:靜態方法和實例方法數組

沒有私有方法,有私有變量,全部實例變量默認都是私有的,全部實例方法默認都是公有的架構

私有方法能夠用 category extension 來代替app


2. #import#include@class有什麼區別?ide

 @class通常用於頭文件中須要聲明該類的某個實例變量的時候用到,它只是聲明瞭一個類名,關於這個類的內部實現都沒有告訴編譯器,m文件中仍是須要使用#import #import比起#include的好處就是不會引發交叉編譯。spa


3.談談你對MVC的理解?爲何要用MVC?在CocoaMVC是怎麼實現的?你還熟悉其餘的OC設計模式或別的設計模式嗎?設計

 MVC就是Model-View-Controller的縮寫,M指的是業務模型,V指的是用戶頁面,C指的是控制器。MVC是架構模式,是講M V的代碼分離,從而使同那個一個程序可使用不一樣的表現形式。 M:表示數據和業務規則,V是用戶看到的並與之交互的頁面,C是接受用戶的輸入並調用MV取完成用戶需求的。server

單例模式,Delegate模式,KVC模式,消息通知模式,Target/Action模式對象


4. 如何監測系統鍵盤的彈出?接口

UIKeyboardDidShowNotification(鍵盤彈出通知)

UIKeyboardWillHideNotification (鍵盤消失通知)


[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector() name:UIKeyboardWillShowNotification  object:nil];


5.舉出5個以上你所熟悉的iOS  SDK庫有哪些和第三方庫有哪些?

AFNetworking,SDWebp_w_picpath,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對象 ,若是整個過程沒有響應這個事件,則該事件被丟棄。通常狀況下,在響應者鏈中只要有對象處理事件,事件就會傳遞。

相關文章
相關標籤/搜索