Что произойдет, если мой класс соответствует двум протоколам с одинаковым свойством?

Допустим, у меня есть два протокола

@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 ответ

Мне кажется, что вы неправильно моделируете свои данные. То, как вы настраиваете musicLibrary, это ОБА и список воспроизведения, и альбом. Я думаю, что более правильная модель будет иметь MusicLibrary, содержащую много плейлистов и много альбомов. Что-то вроде:

@property (nonatomic, strong) NSArray<Album>* albums;
@property (nonatomic, strong) NSArray<Playlist>* playlists;
Другие вопросы по тегам