美文网首页
面试常考--属性修饰符

面试常考--属性修饰符

作者: Hardy_Hu | 来源:发表于2017-06-29 15:21 被阅读0次

在iOS中属性用于封装数据,自动生成get和set方法。面试中经常会被问到assign、strong、weak、copy、unsafe_unretained、retain区别, 在<<Effective Objective-C 2.0>>中有详细的介绍。

  • assign 修饰纯数据类型的简单赋值,如CGFloat或Int。
  • strong 表明属性定义了一种拥有关系,为这种属性设置新值时,先保留新值,并释放旧值,然后在将新值设置上去,计数加1。
  • weak 表明属性定义了一种非拥有关系,为这种属性设置新值时,设置方法既不保留新值,也不释放旧值。在属性所值的对象遭到摧毁时,属性值也清空。
  • copy 与strong类似,但是设置方法并不保留新值,而是将其拷贝。
  • ** retain** ARC下strong等同于MRC下的retain,都是计数加1。
  • ** unsafe_unretained** 于assign差不多,但是它适用于对象类型,表明非拥有关系,当目标对象遭到摧毁的时候,属性值不会自动清空,这一点与weak有区别。
  • ** atomic** 设置成员变量的@property属性时,默认为atomic,提供多线程安全。在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下面这样:
  {lock}
  if (property != newValue)
 { 
       [property release]; 
       property = [newValue retain]; 
}
      {unlock}
  • nonatomic 非原子性,禁止多线程,变量保护,提高性能。

注意:atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

  • readwrite 申明属性可读可写,拥有set方法和get方法。

  • readonly 只读属性,只能获取属性值,不能写属性值。

  • getter=name指定属性值获取方法名。如

@property (nonatomic, getter = isOn) BOOL on;
  • setter=name指定设置方法名,这种用法不太常见。

在iOS内存管理中时刻默念计数式内存管理的思考方法:
自己生成的对象,自己持有。
非自己生成的对象,自己也能持有。
不再需要自己持有的对象时释放。
非自己持有的对象无法释放。

相关文章

  • 面试常考--属性修饰符

    在iOS中属性用于封装数据,自动生成get和set方法。面试中经常会被问到assign、strong、weak、c...

  • 关于iOS基本属性修饰符的理解(weak篇)

    属性修饰符,顾名思义就是修饰属性的符号,针对不同的属性和使用场景有不同的属性修饰符作用:1、weak属性修饰符用来...

  • Android面试常考

    1. 请描述一下Activity 生命周期。 答: 如下图所示。共有七个周期函数,按顺序分别是: onCreate...

  • 面试常考(python)

    Python语言特性 1.Python的函数参数传递 2.元类 metaclass metaclass 允许创建类...

  • 面试常考总结

    css BFC Block formatting context 块级格式上下文形成独立的渲染区域内部元素的渲染不...

  • 谈谈 OC 属性修饰符的本质是什么!

    属性修饰符的本质 assign 修饰符 copy 修饰符 atomic 修饰符 strong 修饰符 weak 修...

  • OC属性的修饰符

    属性修饰符是什么?有什么作用? 属性修饰符,顾名思义就是对属性进行修饰的符号。不同修饰符修饰的属性会表现出不一样的...

  • iOS 9新特性全了解

    新的属性关键字 nullable可能为空,属性修饰符 nonnull不能为空,属性修饰符 null_resetta...

  • Metal初探 (第24节) 图片渲染

    [[position]] 属性修饰符vertex:函数修饰符 id...

  • ios属性修饰符的使用

    iOS中属性修饰符 ios中的主要属性修饰符包含: copy assign retain strong weak ...

网友评论

      本文标题:面试常考--属性修饰符

      本文链接:https://www.haomeiwen.com/subject/tubmcxtx.html