当前位置: 首页 > wzjs >正文

搭建淘宝客网站源码宁波seo快速优化公司

搭建淘宝客网站源码,宁波seo快速优化公司,手机端网站html好看的单页模板,领域网站建设iOS高级开发工程师面试——Objective-C 语言特性 一、多态二、继承三、代理(Delegate)1. 代理为什么用 weak 修饰呢?block和代理的区别?四、通知(NSNotificationCenter)五、KVC (Key-value Coding)六、属性七、`@property` [ˈprɒpəti]的本质是什么?ivar 、 setter …

iOS高级开发工程师面试——Objective-C 语言特性

  • 一、多态
  • 二、继承
  • 三、代理(Delegate)
    • 1. 代理为什么用 weak 修饰呢?block和代理的区别?
  • 四、通知(NSNotificationCenter)
  • 五、KVC (Key-value Coding)
  • 六、属性
  • 七、`@property` [ˈprɒpəti]的本质是什么?ivar 、 setter 、getter 是如何生成并添加到这个类中的?
  • 八、@synthesize 、@dynamic 的区别
  • 九、UIView 和 CALayer 的关系?
  • 十、ViewController 不走 dealloc 的情况
  • 十一、viewController生命周期
  • 十二、NSCache 优于 NSDictionary 的几点?
  • 十三、id 和 instanceType 有什么区别?
  • 十四、self 和 super 的区别 ?
  • 十五、setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?
  • 十六、KVO键值观察

一、多态

​ 多态表现为了三个方面:动态类型动态绑定动态加载。之所以叫做多态,是因为必须到运行时(run time)才会做一些事情。

  1. 动态类型:

    编译器编译的时候是不能被识别的(如 id 类型),要等到运行时(run time),即程序运行的时候才会根据语境来识别。所以这里面就有两个概念要分清:编译时运行时

  2. 动态绑定 :

    动态绑定(dynamic binding)貌似比较难记忆,但事实上很简单,只需记住关键词@selector/SEL即可。

    而在OC中,其实是没有函数的概念的,我们叫消息机制所谓的函数调用就是给对象发送一条消息。这时,动态绑定的特性就来了。OC可以先跳过编译,到运行的时候才动态地添加函数调用,在运行时才决定要调用什么方法,需要传什么参数进去。这就是动态绑定,要实现他就必须用SEL变量绑定一个方法,最终形成的这个SEL变量就代表一个方法的引用。动态绑定的特定不仅方便,而且效率更高。

  3. 动态加载 :

    让程序在运行时添加代码模块以及其他资源。用户可以根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件。可执行代码中可以含有和程序运行时整合的新类。

二、继承

OC 不支持多继承,但是可以用 代理(Delegate) 来实现多继承。runtime 消息转发等实现伪多继承。

三、代理(Delegate)

在这里插入图片描述
​代理是一种设计模式,以 @protocol 形式体现,一般是一对一传递

1. 代理为什么用 weak 修饰呢?block和代理的区别?

  • 一般以weak关键词以规避循环引用

    • weak 修饰指明该对象并不负责保持delegate这个对象,delegate 这个对象的销毁由外部控制。
    • strong 修饰该对象强引用 delegate,外界不能销毁 delegate对象,会导致循环引用。
  • block 和代理的区别:

    • 运行成本:代理运行成本低,block 运行成本高。
      因为block出栈需要将使用的数据从栈内存拷贝到堆内存,如果本身就在堆内存的话计数器会+1,使用完或block置为nil后才消除;
      delegate 只保留了一个指针对象,直接回调,没有额外的消耗
    • 写法更简练,更紧凑
    • block 注重结果的传输
    • block 要防止循环引用,善用 __weak 和 __strong
    • 公共接口,当方法较多后者调用太频繁建议用delegate

四、通知(NSNotificationCenter)

​ 使用观察者模式来实现的用于跨层传递信息的机制。传递方式是一对多的。

如果实现通知机制?
在这里插入图片描述

五、KVC (Key-value Coding)

键值编码是一种间接访问对象的属性使用字符串来标识属性,而不是通过调用存取方法,直接或通过实例变量访问的机制。非对象类型的变量将被自动封装或者解封成对象,很多情况下会简化程序代码。

1. KVC 底层实现原理
当一个对象调用setValue:forKey:方法时,方法内部会做以下操作:

  • 判断有没有指定 keyset方法,如果有set方法,就会调用 set 方法,给该属性赋值
  • 如果没有 set 方法,判断有没有跟 key 值相同且带有下划线的成员属性(_key) 如果有,直接给该成员属性进行赋值
  • 如果没有成员属性 _key ,判断有没有跟key 相同名称的属性。如果有,直接给该属性进行赋值
  • 如果都没有,就会调用 valueforUndefinedKey setValue:forUndefinedKey: 方法

2. KVC 使用场景

  • KVC 属性赋值
  • 添加私有成员变量
  • 字典和模型之间的互转

六、属性

OC 中,基本数据类型的默认关键字是atomic, readwrite, assign;普通属性的默认关键字是atomic, readwrite, strong

1. 读写权限readonlyreadwrite(默认)

2. 原子性: atomic(默认)nonatomicatomic读写线程安全,但效率低,而且不是绝对的安全,比如如果修饰的是数组,那么对数组的读写是安全的,但如果是操作数组进行添加移除其中对象的话,就不保证安全了。nonatomic

http://www.dtcms.com/wzjs/310142.html

相关文章:

  • 手机开发安卓软件搜索引擎优化的作用是什么
  • 可以做兼职的网站怎么做一个自己的网站
  • 网站蜘蛛池怎么做的怎样优化标题关键词
  • 最潮流的网站开发脚本语言推广app大全
  • 做映射后 内网无法通过域名访问网站培训机构招生7个方法
  • 小程序网站模板网站批量收录
  • 小公司网络组建规划seo软文是什么
  • 唐山网站建设开发谷歌google 官网下载
  • 培训如何优化网站东莞推广平台有哪些
  • 东城建站推广搜索引擎优化怎么做的
  • 呼伦贝尔网站建设平台谷歌搜索引擎免费入口镜像
  • 北京造价员变更在哪个网站做yahoo引擎入口
  • 北京旅游网站建设湖北seo公司
  • 网站建设零金手指专业百度一下了你就知道官网
  • 绵竹移动网站建设企业建站平台
  • 网页设计公司有哪些成都天津百度seo
  • 中国建设工程信息网官网入口厦门seo大佬
  • 代运营公司十大排名太原seo推广
  • 哈尔滨小程序开发制作公司南宁seo渠道哪家好
  • 网站想换空间免费自助建站模板
  • 自己的网站做appseo云优化软件破解版
  • 不良网站代码怎么查网站域名查询系统
  • 新手初做网站平台宣传推广方案
  • 外贸网站开发开发seo博客模板
  • 收录快的门户网站网络销售的好处和意义
  • 专业制作视频的软件长沙优化科技有限公司正规吗
  • 商城网站 没有什么文章 怎样优化网络营销常见术语
  • 傻瓜式在线做网站培训机构退费法律规定
  • 电脑搭建网站需要空间优化营商环境条例心得体会
  • axure怎么做网站原型微信营销典型案例