iOS开发知识点总结(三)
1.页面传值都有哪些实现方式
代理、block、通知、属性传值、单例传值、NSUserDefault
2.简述深拷贝和浅拷贝的区别
浅拷贝只复制对象本身,对象的属性以及包含的对象不做复制,源对象和副本指向的是同一个对象,对象的引用计数器+1,其实相当于做了一次retian操作
深拷贝则是复制对象本身,对象的属性也会复制一份。源对象和副本指向的是不同的两个对象,源对象引用计数器不变,副本计数器设置为1
只有不可变对象创建不可变副本才是浅拷贝,其他都是深拷贝
3.系统中有哪些对象是单例
UIApplication(应用程序实例)
NSNotificationCenter(消息中心)
NSFileManager(文件管理)
NSUserDefaults(应用程序设置)
NSURLCache(请求缓存)
NSHTTPCookieStorage(应用程序cookies池)
4.简述MVC设计模式
使用MVC的应用程序被分为3个核心部分:模型(Model)、视图(View)、控制器(Controller)。他们各司其职,既分工明确又相互合作。
Model:持有我们应用的数据,和定义怎么操纵它
View:处理用户的操作和展示Model
Controller:它的作用是协调View和Model把数据展示到View上
Controller可以直接和Model通信,也可以直接和View通信。Model和View永远不能直接通信
5.iOS中哪些技术符合观察者模式
在iOS开发中 ,会接触到的经典观察者模式的实现方法有NSNotificationCenter,KVO,Delegate等
6.什么是工厂方法?
在基类中定义创建对象的一个接口,让子类决定实例化那个类,工厂方法让一个类的实例化延迟到子类中进行。工厂方法要解决的问题是对象的创建时机,它提供了一种拓展的策略,很好的符合了开放封闭原则,工厂方法也就做虚构造器
7.什么是代理模式,实现代理需要注意什么
在项目中我们经常会用到代理的设计模式,这是iOS的一种消息传递方式,也可以通过这种方式来传递一些参数,iOS中对代理支持的很好,有代理对象、委托者、协议三部分组成
协议:用来指定代理双方可以做什么,必须做什么
代理:根据制定的协议,完成委托方需要实现的功能
委托:根据制定的协议,指定代理去完成什么功能
8.简述Storyboard和Xib的联系和区别
联系:
都用来描述软件界面
都用Interface Builder工具来编辑
区别:
Xib是轻量级的,用来描述局部的UI界面
Storyboard是重量级的,用来描述整个软件多个界面,并且能展示多个界面之间的跳转关系
9.简述UITableView的Cell的重用机制
UITableView维护了一个服用队列,当Cell从屏幕上消失时,就会进入复用队列,若没有就会重新创建一个Cell。重用机制通过对Cell的重复使用,来减少内存的使用
10.如何用UIScrollView实现无限加载多张图片
创建一个UIScrollView,高度为屏幕的高度,宽度为三倍的屏幕宽度,设置为按屏幕滑动,设置偏移量(屏幕宽度,0)。第一个屏幕宽度和第三个屏幕宽度贴一个UIImageView显示图片的前一张和后一张,中间贴一个UIScrollView,大小为屏幕的大小,在上面贴一个UIImageView显示要显示的图片。当向左滑动,通过UIScrollView的代理方法,检测到之后将第一个屏幕宽度和第三个屏幕宽度上的UIImageView改为图片的前一张和后一张,中间的scrollView上的UIImageView上的图片改为当前图片,同时设置最外部的UIScrollView的偏移量为(屏幕宽度,0);向右滑动与向左滑动同理。