美文网首页
遇到的 ios 笔试题解析 1

遇到的 ios 笔试题解析 1

作者: 水中的蓝天 | 来源:发表于2018-08-29 17:28 被阅读1次

    一、判断下列叙述对错 如果是错误请说明原因

    1. NSArrey 比 NSSET 查找效率要高。

    答:是错误的;

    解:NSArray和NSSet都是用于存储对象的集合;NSSet、NSMutableSet声明的对象,是无序的集合,在内存中存储方式是不连续的;而NSArray、NSMutableArray声明的对象,是有序集合,在内存中的存储位置也是连续的。

    NSSet和NSArray的区别,在搜索一个单元素时NSSet比NSArray的效率高,主要是因为NSSet用到了哈希算法(hash)  NSSet中元素的存储和访问都是一个hash的过程;同时NSSet中是数据无重复集合,同一个元素你存储多少遍都是会存在一个,多余的被覆盖,而NSArray中数据是可以重复的。

    例如:

    NSSet *set = [NSSet setWithObjects:@"1", @"2", @"3", @"4", @"5", @"6",@"7",@"8", nil];

    NSLog(@"set:%@", set);

    打印结果:set:{(7, 3,8,4,5,1,6, 2)}

    NSArray *array = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6",@"7",@"8", nil];NSLog(@"array:%@", array);

    打印结果:

    array:(1,2,3,4,5,6,7,8)

    2. CGContextRef 是不允许在非主线程绘制的。

    答:是对的;为什么必须在主线程中操作UI ,因为UIKit不是线程安全的

    如下面这几种情况:

    1.在两个子线程同时设置同一个背景图片,那么很有可能因为当前图片被释放了两次而导致应用崩溃。

    2.两个子线程同时设置同一个UIView的背景颜色,那么很有可能渲染显示的是颜色A,而此时在UIView逻辑树上的背景颜色属性为B。

    3.两个子线程同时操作view的树形结构:在线程A中for循环遍历并操作当前View的所有subView,然后此时线程B中将某个subView直接删除,这就导致了错乱还可能导致应用崩溃。iOS4之后苹果将大部分绘图的方法和诸如 UIColor 和 UIFont 这样的类改写为了线程安全可用,但是仍然强烈建议讲UI操作保证在主线程中执行。

    二、简答题

    1. runtime 的用途有哪些,请举例说明

    <1> 动态方法交换

     Method run = class_getClassMethod([ViewController class], @selector(run));

        Method go  =  class_getClassMethod([ViewController class], @selector(go));

        method_exchangeImplementations(run, go);

    <2>实现字典和模型的自动转换

    (核心就是可以遍历出字典中的每个属性,json解析中大牛框架都用了这个特性,包括MJEXtension,YYModel,jsonModel都是将json转换为字典,再遍历字典中的每个属性来进行modle的转换) 

    <3> 实现控制器跳转

    有一个变态需求,当收到推送过来的消息,需要跳转到对应控制器.利用runtime动态生成对象、属性、方法这特性,我们可以先跟服务端商量好,定义跳转规则,比如要跳转到A控制器,需要传属性id、type,那么服务端返回字典给我,里面有控制器名,两个属性名跟属性值,客户端就可以根据控制器名生成对象,再用kvc给对象赋值,这样就可以了。

    <4> 热更新 JSPath

    主要用于动态的修复bug或页面,而不需要通过苹果审核。

    <5> 增删改查换一个类的方法、成员变量、以及属性。

    2.写出UIButton的继承关系,一直到NSObject

    UIButton -->UIControl-->UIView-->UIResponder-->NSObject

    3.写出一个单利

    1 2

    4.请写出以下代码执行后的结果

    关于GCD的认识:GCD(Grand Central Dispatch)的使用 多线程之GCD——基本概念与队列(Dispatch Queue)

    相关文章

      网友评论

          本文标题:遇到的 ios 笔试题解析 1

          本文链接:https://www.haomeiwen.com/subject/xmahwftx.html