我对协议中声明的属性有一些疑问。
返回类型差异
@protocol IHaveProperties
@required
@property (nonatomic, strong) IAmOfTypeX *propertyOfProtocolType;
@property (nonatomic, strong) NSArray *array;
@end
@interface ClassThatHasProperties : NSObject<IHaveProperties>
@property (nonatomic, strong) ImplementationOfTypeX *propertyOfProtocolType;
@property (nonatomic, strong) NSMutableArray *array;
@end
好的,所以我用协议/类组合尝试了这个,令我懊恼的是,它编译了。
这是如何运作的?这在技术上不符合接口吗?
属性声明修饰符
@protocol IHaveProperty
@required
@property (nonatomic, strong, readonly) *example;
@end
@interface HaveProperty : NSObject<IHaveProperty>
@property (nonatomic, strong, readonly) *example;
@end
我的 Mac 现在正在重新启动,所以我无法尝试,但我认为这没关系,因为协议声明没有任何支持。调用者不会对所有修饰符感兴趣,只会对实现协议的类感兴趣。