如果我的类符合具有相同属性的两个协议会发生什么?

时间:2017-01-10 07:26:32

标签: ios objective-c iphone xcode objective-c-protocol

我们说我有两个协议

@protocol Playlist<NSObject>
@property(nonatomic, copy) NSString *title;
@property(nonatomic, assign) NSUInteger trackCount;
@end

和另一个

@protocol Album<NSObject>
@property(nonatomic, copy) NSString *name;
@property(nonatomic, assign) NSUInteger trackCount;
@end

并且有一个符合这些协议的类

.h文件

@interface MusicLibrary <Playlist, Album>
@end

.m文件

@implementation MusicLibrary
@synthesize title;
@synthesize name;
@synthesize trackCount;
@end

它会引用哪个trackCount属性?我可以两次使用trackCount吗?

肯定不会给出任何编译时错误。

1 个答案:

答案 0 :(得分:0)

在我看来,您正在对数据建模错误。你设置musicLibrary的方式既可以是播放列表,也可以是专辑。我认为一个更正确的模型会有一个包含许多播放列表和许多专辑的MusicLibrary。类似的东西:

@property (nonatomic, strong) NSArray<Album>* albums;
@property (nonatomic, strong) NSArray<Playlist>* playlists;