1.为什么说Objective-C是一门动态的语言?
a.动态类型:运行时再决定对象的类型,编译器编译时是不被识别的;相对应的是静态类型:编译时就已经识别对象的类型,如果类型不对应,程序在编译过程中就会发出警告;
b.动态绑定:当一个实例对象被确定后,其类型也被确定,其对于的属性和响应的方法也被完全确定,这就好动态绑定;
c.动态加载:根据需要加载资源;比如在plus手机上加载@3x的图片,在5s,6上加载@2x的图片等
2.为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
1. weak:指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制; strong:该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用(Retain Cycles); 代理使用weak(assign)是防止循环引用;
2. Datasource是数据源, 在告诉使用者之前的view中都有什么东西,有什么属性,属性的值都是多 少,是只关于数据的东西. Delegate用来监听view的一些操作, 是在告诉使用者view有什么方法可以供我调用. 一个是数据,一个是操作。
3.参考http://www.jianshu.com/p/4e829fa34494
http://www.jianshu.com/p/8b3cf2187255
NSString为什么要用copy关键字,如果用strong会有什么问题?http://www.cnblogs.com/Caersi/p/6376213.html
如何令自己所写的对象具有拷贝功能?http://www.jianshu.com/p/c106d1e6f4bc
网友评论