gpt4 book ai didi

ios - 使用 ARC,@property 是否必要

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:13:09 24 4
gpt4 key购买 nike

在 ARC 中,每个指针分配默认都会保留。鉴于此,在非原子情况下,为什么我什至需要声明属性?

这两个有什么不同?

//Property
@interface I1 : NSObject
@property (nonatomic, strong) NSString* str;
@end

I1 *obj1 = ...;
obj1.str = [[NSString alloc] init...];

//Only member variable
@interface I2 : NSObject {
@public
NSString* str;
}
@end
I2 *obj2 = ...;
obj2->str = [[NSString alloc] init...];

最佳答案

内存管理并不是使用属性的唯一优势。

我特别想到的两个是:

  1. KVO(无需手动调用 willChangeValueForKey:didChangeValueForKey: - 参见 Manual Change Notification)
  2. 能够为 setter 和 getter 编写自定义逻辑以及为 setter 和 getter 编写子类自定义。

bbum 在 iOS: must every iVar really be property? 中对此做出了很好的回应

关于ios - 使用 ARC,@property 是否必要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com