1.代理的优缺点,你在什么情况下会用到代理?
1)优点:
1.代理在自定义控件方面具有其绝对的优势(AFN)
2.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates;
3.非常严格的语法。所有监听到的事件必须是在delegate协议中有清晰的定义。
2)缺点:
1.需要定义很多的代码;1)协议定义;controller的delegate属性;3)在delegate中实现delegate方法
2在释放代理对象时需要小心的将delegate置为nil
应用:
控件比较多,接口比较多的时候;
2.通知的优缺点
1)优点:
1.不需要编写多少代码,实现比较简单
2.可以一对多,即:一个对象发出的通知,多个对象能够做出反应
2)缺点:
1;在释放注册的对象时,需要在通知中心取消注册;
2:在编译期不会检查通知是否能够被观察者正确的处理;
3:通知发出后,controller不能从观察者获得任何的反馈信息。
3.block的优缺点
优点:
1.Blocks 更清晰。比如 一个 viewController 中有多个弹窗事件,Delegate 就得对每个事件进行判断识别来源。而 Blocks 就可以在创建事件的时候区分开来了。这也是为什么现在苹果 API 中越来越多地使用 Blocks 而不是 Delegate。
缺点:
1.缺点是若你的响应部分处理不当,若多次返回,那么你的代码会乱套
场景:
适合BLOCK的显著特点,有明确的发起方和响应方,两者能配对需要紧密联系。如:网络请求。
4.ViewController生命周期
alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc
5.给imageView图片设置圆角
1)在CALayer中设置cornerRadius属性
2) drawRect中使用UIBezierPath画一个圆角的path, 然后clip. 但是如果把UIView的opaque设置成YES, 就会出现黑色的边. 不知道有什么办法可以避免这个问题又能得到最高性能.
6.队列和线程
1)优点:
1.代理在自定义控件方面具有其绝对的优势(AFN)
2.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates;
3.非常严格的语法。所有监听到的事件必须是在delegate协议中有清晰的定义。
2)缺点:
1.需要定义很多的代码;1)协议定义;controller的delegate属性;3)在delegate中实现delegate方法
2在释放代理对象时需要小心的将delegate置为nil
应用:
控件比较多,接口比较多的时候;
2.通知的优缺点
1)优点:
1.不需要编写多少代码,实现比较简单
2.可以一对多,即:一个对象发出的通知,多个对象能够做出反应
2)缺点:
1;在释放注册的对象时,需要在通知中心取消注册;
2:在编译期不会检查通知是否能够被观察者正确的处理;
3:通知发出后,controller不能从观察者获得任何的反馈信息。
3.block的优缺点
优点:
1.Blocks 更清晰。比如 一个 viewController 中有多个弹窗事件,Delegate 就得对每个事件进行判断识别来源。而 Blocks 就可以在创建事件的时候区分开来了。这也是为什么现在苹果 API 中越来越多地使用 Blocks 而不是 Delegate。
缺点:
1.缺点是若你的响应部分处理不当,若多次返回,那么你的代码会乱套
场景:
适合BLOCK的显著特点,有明确的发起方和响应方,两者能配对需要紧密联系。如:网络请求。
4.ViewController生命周期
alloc -> initWithNibName -> loadView -> viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear -> dealloc
5.给imageView图片设置圆角
1)在CALayer中设置cornerRadius属性
2) drawRect中使用UIBezierPath画一个圆角的path, 然后clip. 但是如果把UIView的opaque设置成YES, 就会出现黑色的边. 不知道有什么办法可以避免这个问题又能得到最高性能.
6.队列和线程