【发布时间】:2019-02-05 23:15:54
【问题描述】:
这不是为了解决任何特定问题,只是想了解 Objc 中属性的细微差别。
说我有课Dude
# Dude.h
@interface Dude: NSObject
@property (readonly, nonatomic) NSNumber *height;
@end
我在实现文件中扩展了类,但是改变了属性。
# Dude.m
@interface Dude()
@property (readwrite, atomic) NSNumber *height;
@end
@implementation Dude
@end
我得到一个错误。
属性“height”上的“atomic”属性与属性不匹配 继承自“老兄”
那么这里实际发生了什么。扩展上的属性是否相同?我只是覆盖了访问器吗?
此外,当我更改顺序以使公共接口为 readwrite 但私有接口为 readonly 时,我收到错误:
在类扩展“Dude”中非法重新声明属性(属性 必须是'readwrite',而它的主要必须是'readonly')
这让我觉得这是一个完整的重新声明,但现在我不太确定实际发生了什么。寻求澄清。
【问题讨论】:
标签: objective-c