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

时间: 2024-08-01 05:13:48

iOS面试笔记(1)的相关文章

iOS面试笔记(2)

一.为什么在使用部分第三方SDK中block回调不需要使用weakSelf,例如AFN AFN在封装的时候,重写了setCompletionBlock方法,在回调后直接将completionBlock置为nil,打破了循环引用 二.Block为什么要用copy来修饰 默认情况下,block是存档在栈中,出了作用域就会被回收,再去调用将会crash,通过copy操作可以使其在堆中保留一份,保证能被访问. 三.消息推送流程是怎样,devicetoken怎么来的 1.应用程序通过方法 - (void)

李洪强iOS面试一般性问题

iOS面试一般性问题,学会这些拿offer几率提升90%! 面试题中有一些一般性的问题,通常是会问到的.面试iOS应聘者时,切入点很重要,不同的切入点会导致不同的结果,没有找到合适的切入点也无法对应聘者有一个全面的了解.所以下面的面试问题更多的是提供方向,没有固定的答案,而且可以根据应聘者的回应引出更多有意思深层次的讨论. 注意:以下问题的参考答案均为笔者所答,不代表正确,问题答案因人而异,请根据自己的实际情况回答,若认为不合理,请在评论中指出.下面所有的参考答案,都是笔者站在面试官的角度来分析

iOS学习笔记之UITableViewController&amp;UITableView

iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论文,因此需要继续思考新的算法.这是一件挺痛苦的事情,特别是在很难找到与自己研究方向相关的文献的时候.也许网格序列水印这个课题本身的研究意义就是有待考证的.尽管如此,还是要努力的思考下去.由于实验室的原因,iOS的学习进度明显受到影响,加之整理文档本身是一件耗费时间和精力的事情,因此才这么久没有写笔记了. M

iOS面试

高德iOS面试整理(顺序有些乱,一面跪了) 1.简单自我介绍 2.聊c语言 3.两个数比较大小不用if和三目运算符 4.int转化为bit数组 5.多态和隐藏 6.const 和define区别 7.String类实现拷贝构造函数注意事项,是否有必要重写 数据结构 1.树层次遍历 2.链表删除 iOS 1.通知和delegate 2.ViewController 生命周期,  手动代码View添加 3.iOS 的click事件的响应过程 4.通知和KVO比较 5.ARC和非ARC (问到静态分析

IOS开发笔记-百度地图(第三方库)

最近做了百度地图,在导入SDK后遇到了一些问题 编译错误: linker command failed with exit code 1 (use -v to see invocation) 想了很多办法,查了很多资料,最后终于解决. 可能原因: 1. 有重复的.m文件,或者未导入 解决办法:有重复的删除即可 在工作左边导航栏Target-->Build Phases-->compile Sources中,第三库库的所有.m文件都添加到里面 2.Valid Architectures 的值 在

iOS: 学习笔记, Swift操作符定义

Swift操作符可以自行定义, 只需要加上简单的标志符即可. @infix 中置运算. 如+,-,*,/运算 @prefix 前置运算. 如- @postfix 后置运算. a++, a-- @assignment 赋值运算. +=, -=, --a, ++a // // main.swift // SwiftBasic // // Created by yao_yu on 14-7-27. // Copyright (c) 2014年 yao_yu. All rights reserved.

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关

iOS: 学习笔记, 添加一个带界面约束的控制器

1. 创建一个空iOS应用程序(Empty Application). 2. 添加加控制器类. 修改控制器类的viewDidLoad 1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 //创建标题 5 UILabel *header = [[UILabel alloc] init]; 6 header.text = @"欢迎来到我的世界!"; 7 header.textAlignment = NSTextAlignmentCenter

iOS学习笔记(2)— UIView用户事件响应

iOS学习笔记(2)— UIView用户事件响应 UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相关的属性和方法. 1.交互相关的属性 userInteractionEnabled 默认是YES ,如果设置为NO则不响应用户事件,并且把当前控件从事件队列中删除.也就是说设置了userInterfaceEnabled属性的视图会打断响应者链导致该view的subview都无法响应事件. multipleTouchEnabled  默认是NO,如果设置为YE