首页 > 代码库 > iOS面试笔记(1)

iOS面试笔记(1)

面试前做好充足准备,一定要将自己写入简历的技术点理解透彻,并能完整地表达出来

下面列举今天面试遇到一些值得列出来的题目。

一、 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)使用绘图异步绘制复杂界面

 

iOS面试笔记(1)