首页 > 代码库 > 19、iOS面试题·自整理·Three

19、iOS面试题·自整理·Three

<style>p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; text-indent: 21.0px; font: 10.5px "Songti SC"; color: #000000 } p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 10.0px "Times New Roman"; color: #000000 } p.p5 { margin: 0.0px 0.0px 0.0px 36.0px; text-indent: -36.0px; line-height: 16.0px; font: 10.0px "Helvetica Neue"; color: #252525; background-color: #fafafa } p.p6 { margin: 0.0px 0.0px 0.0px 36.0px; text-indent: -36.0px; line-height: 16.0px; font: 10.0px "PingFang SC"; color: #252525; background-color: #fafafa } p.p7 { margin: 0.0px 0.0px 10.0px 0.0px; line-height: 15.0px; font: 10.0px Times; color: #000000; background-color: #ffffff; min-height: 13.0px } p.p8 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 13.0px; font: 11.0px Menlo; color: #333333; background-color: #ffffff } p.p9 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 13.0px; font: 10.0px "PingFang SC"; color: #333333; background-color: #ffffff } p.p10 { margin: 0.0px 0.0px 0.0px 36.0px; text-indent: -36.0px; line-height: 16.0px; font: 10.0px "PingFang SC"; color: #000000; background-color: #ffffff } p.p11 { margin: 0.0px 0.0px 10.0px 0.0px; line-height: 16.0px; font: 10.0px "PingFang SC"; color: #000000; background-color: #eeeeee } p.p12 { margin: 0.0px 0.0px 10.0px 0.0px; line-height: 16.0px; font: 10.0px Menlo; color: #000000; background-color: #eeeeee } p.p13 { margin: 0.0px 0.0px 0.0px 36.0px; text-indent: -36.0px; line-height: 16.0px; font: 10.0px "Helvetica Neue"; color: #000000; background-color: #ffffff } p.p14 { margin: 0.0px 0.0px 14.0px 0.0px; line-height: 22.5px; font: 10.0px Times; color: #333333; background-color: #ffffff } p.p15 { margin: 0.0px 0.0px 14.0px 0.0px; line-height: 22.5px; font: 10.0px "Songti SC"; color: #333333; background-color: #ffffff } p.p16 { margin: 0.0px 0.0px 14.0px 0.0px; line-height: 26.0px; font: 10.0px "Songti SC"; color: #333333; background-color: #ffffff } p.p17 { margin: 0.0px 0.0px 15.0px 0.0px; line-height: 40.0px; font: 10.0px Times; color: #2f2f2f; background-color: #ffffff } p.p18 { margin: 0.0px 0.0px 15.0px 0.0px; line-height: 40.0px; font: 10.0px "PingFang SC Semibold"; color: #2f2f2f; background-color: #ffffff } p.p19 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 22.0px; font: 16.0px "Songti SC"; color: #3d464d; background-color: #f8f8f8 } li.li1 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 10.5px "Songti SC"; color: #000000 } li.li3 { margin: 0.0px 0.0px 0.0px 0.0px; text-align: justify; font: 10.5px "Times New Roman"; color: #000000 } span.s1 { font: 10.5px "Times New Roman" } span.s2 { } span.s3 { font: 10.5px "Times New Roman" } span.s4 { font: 10.5px "Songti SC" } span.s5 { font: 10.0px "Songti SC" } span.s6 { font: 10.0px "PingFang SC" } span.s7 { font: 10.0px "Helvetica Neue" } span.s8 { font: 11.0px Times } span.s9 { font: 11.0px "PingFang SC" } span.s10 { font: 11.0px Menlo } span.s11 { font: 10.0px Menlo } span.s12 { font: 14.0px Menlo; color: #008400 } span.s13 { font: 10.0px Times } span.s14 { font: 10.0px Arial } span.s15 { font: 10.0px Times; color: #df3434 } span.s16 { font: 10.0px "Songti SC"; color: #df3434 } span.s17 { font: 10.0px Helvetica } span.s18 { font: 16.0px Times } span.Apple-tab-span { white-space: pre } ol.ol1 { list-style-type: decimal }</style>

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

19、iOS面试题·自整理·Three