Objective-C 属性的默认属性是什么?

问题描述 投票:0回答:3

当您未在目标 C 中列出任何属性时,属性的默认属性是什么?

例如,如果我写了这个:

@property float value;

默认值是什么,比如它是只读的,它是否保留......等等?

ios objective-c cocoa-touch
3个回答
71
投票

默认/隐式值为

atomic
readwrite
assign

原子

这意味着该值是原子读/写的。与有些流行的误解相反,原子性并不等于线程安全。简单来说,它保证您读取或写入的值将被完整读取或写入(当使用访问器时)。即使您一直使用访问器,它也不是严格线程安全的。

读写

该属性有一个 setter 和一个 getter。

分配

此默认值通常用于 POD(普通旧数据)和内置类型(例如

int

)。


对于

NSObject

类型,您会倾向于持有强有力的参考。在大多数情况下,您将声明属性

copy
strong
retain
assign
不执行引用计数操作。另请参阅:
http://clang.llvm.org/docs/AutomaticReferenceCounting.html#property-declarations

在某些情况下,该属性可能在 ARC 下隐式

strong


在没有所有权来源的情况下合成的可保留对象指针类型的属性具有其关联实例变量的所有权(如果它已经存在);否则,[从 Apple 3.1、LLVM 3.1 开始]其所有权是隐含的强的。在此修订之前,综合这样的属性是不正确的。


8
投票

@property (atomic, readwrite, assign) float value;



3
投票
Objective-C 属性

[Objective-C 属性]

在 Objective-C 中,当你编写

@property

时,在你编写属性列表之后

默认属性:

    指针:
  • strong

    atomic, readwrite
    
    

  • 原语:
  • assign

    atomic, readwrite
    @property (atomic, readwrite, strong) NSString *someString;
    @property (atomic, readwrite, assign) int someInt;
    

    
    
原子性

只是线程安全的一部分 - Atomic Operations

[关于]

  • atomic

    (默认)-保证你不会得到一些垃圾内存,它总是会包含一些值。

    
    

  • nonatomic

    - 你可以在多线程环境中获取垃圾数据,但由于缺乏额外的逻辑,速度会快一点

    
    

访问权限

- 修改访问权限

  • readwrite

    (默认)- getter 和 setter 已生成并且可以使用

    
    

  • readonly

    - 仅生成吸气剂。您无法设置某些值

    
    

存储

- backed instance variables(支持 iVar)

[关于]的内存管理,自动生成

  • strong

    (指针的默认值) - 当强支持的 iVar 有对其的引用时,对象无法被释放

    
    

  • retain

    历史上是在

    strong
    之前创建的,具有相同的想法。不同之处在于,当
    retain
    被禁用时,应使用
    ARC
    
    

  • assign

    (基元的默认值)- 超出引用计数

    
    

  • weak

    - 此参考不会像

    strong
    那样考虑(+1)。这就是为什么当所有其他
    strong
    引用离开我们的对象时,我们的引用将指向
    nil
    。它用于与
    Retain cycle
    战斗,委托模式就是一个很好的例子
    [关于]
    
    

  • unsafe_unretained

    - 与

    weak
    类似,但是当没有人引用对象时,我们的 iVar 将指向一些垃圾(
    dangling pointer
    )并且行为不是预期的。它可以有比
    weak
    更好一点的性能
    

  • copy

    - 当您将某个对象传递给我们属性的 setter 时,对象的新副本会分配给 iVar(

    NSCopying
    协议)
    
    

[Swift 弱 vs 无主]

© www.soinside.com 2019 - 2024. All rights reserved.