面試前做好充足準備,一定要将自己寫入履歷的技術點了解透徹,并能完整地表達出來
下面列舉今天面試遇到一些值得列出來的題目。
一、 H5與原生怎樣互動
(1)js向原生傳遞參數,第一種方式:通過UIWebView的代理方法- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest: (NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 來監聽URL的改變,H5端需要原生處理某個事件或者傳遞參數都可以将内容按雙方定義好的格式拼接在URL中,原生根據URL中資料來攔截跳轉,執行下一步操作。第二種方式:使用原生架構<JavaScriptCore/JavaScriptCore>
JSContext context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//JS調用無參數OC
_context[@"jsMethod"] = ^() {
//用數組接收傳過來的多個參數
NSArray *params = [JSContext currentArguments];
//然後取出相對應的值
NSString *str1 = params[0];
NSString *str2 = params[1];
};
注意此處的“jsMethod”方法必須是一定要與H5中的一緻,才能通過此方法拿到參數
(2)原生向js 傳遞參數,使用stringByEvaluatingJavaScriptFromString方法
[_webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"func('%@', '%@');", str2, str3]];
(3)另外一種方式是直接使用第三方架構 WebViewJavascriptBridge實作。
二、WKWebView與原先的UIWebView有哪些差別
(1)WKWebView相較于UIWebView具有以下特點
-
- 記憶體占用是uiwebview的1/4~1/3
- 頁面加載速度有提升
- 更為細緻地拆分了 UIWebViewDelegate 中的方法
- 不支援頁面緩存
(2)WKWebView 在代理方法上也有所增加WKWebView使用
三、适配iOS10 需要注意哪些問題
(1)隐私權限問題,當項目中通路了相冊、相機、聯系人等隐私資料時需要在info.plist檔案中添加相應的key
(2)消息推送問題 本文較長的描述了iOS10 推送
四、UITableView的優化問題
(1)處理好cell的複用問題
(2)将計算好的cell高度儲存,避免重複計算
(3)盡量将cell 以及其子視圖的opaque設為YES
(4)少用或不用透明塗層
(5)避免使用layer切圓角
(6)減少contentview上自視圖的數量
(7)盡量少用addView給Cell動态添加View,在初始化時添加,動态顯示或隐藏
(8)使用繪圖異步繪制複雜界面