19iOS面试题·自整理·Three

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了19iOS面试题·自整理·Three相关的知识,希望对你有一定的参考价值。

1.请简述你对工厂方法的理解?

工厂Mycontrol,设计控件是用到工厂设计模式。类簇类似于工厂设计模式;工厂模式就是定义创建对象的接口,让子类决定实例化哪一个类。这样,类的实例化就推迟到了子类

 

2.UITableView有哪些优化方式?

    UITableView的优化主要从三个方面入手:

? 提前计算并缓存好高度(布局),因为heightForRowAtIndexPath:是调用最频繁的方法;

? 异步绘制,遇到复杂界面,遇到性能瓶颈时,可能就是突破口;

? 滑动时按需加载,这个在大量图片展示,网络加载的时候很管用!(SDWebImage已经实现异步加载,配合这条性能杠杠的)。

 

3.你如何理解blockblock有什么用途?

 ? 我们可以把Block当做Objective-C的匿名函数。Block允许开发者在两个对象之间将任意的语句当做数据进行传递,往往这要比引用定义在别处的函数直观。另外,block的实现具有封闭性(closure),而又能够很容易获取上下文的相关状态信息。

? block是代码块,其本质和变量类似。不同的是代码块存储的数据是一个函数体。使用Block,就可以像其他标准函数一样,传入参数,并得到返回值。

作为OC对象的属性,实现对象之间的传值    ? Block可以看做是一个变量,因此可以作为OC对象的属性

4.请问怎样能够保证定位更省电?

1.开启开始定位之后,不关闭,让其持续定位

  2.设置距离筛选器:坐标移动到指定距离才会调用代理方法

  3.设置精准度:通过降低计算的过程(GPS),来达到省电的目的

5.请简述NSUserDefaults的使用场景和 使用注意事项?

SUserDefaults适合存储轻量级的数据,他不仅可以存储基本数据类型,还可以存储NSNumberIntegerFloatDouble),NSStringNSDateNSArrayNSDictionaryBOOL类型。

但是NSUserDefaults不能存储自定义的类对象,若把一个对象存储到NSUserDefaults会报错。聪明的人会把对象放进数组,再把数组存入NSUserDefaults,不过这样做事错误的,因为数组中包含了自定义对象。

若要在NSUserDefaults中存入自定义对象,则对象需要遵循NSCoding协议,并实现encodeWithCoder方法和initWithCoder方法。具体参考http://my.oschina.NET/u/1245365/blog/294449

值得一提的是,我发现类型为NSNull的空数据也是无法存入NSUserDefaults的。若数据中有NSNull类型空数据,把它置nil即可存入NSUserDefaults

总之,NSUserDefaults是一种操作简单的数据库

6.ios中数据库使用什么技术实现的 ?

使用SqliteCoreData实现的

7.iOS中如何实现数据模型的存储?

 归档也是iOS提供给开发者的一种数据存储的方式,事实上,几乎所有的数据类型都可以通过归档来进行存取。其存储与读取的过程,主要封装在两个类中:NSKeyedArchiverNSKeyedUnarchiver

以上是关于19iOS面试题·自整理·Three的主要内容,如果未能解决你的问题,请参考以下文章

17iOS面试题·自整理·Two

18iOS面试题·自整理·One

面试题 | 数据库笔试题集合·之·SQL语句

真·面试题

C# 基础篇·面试题

183个Java面试题及回答,值得收藏!