@protocol Named
@property NSString *name;
@end
@interface Flower : NSObject<Named>
@property NSString *name;
@end
@interface City : NSObject<Named>
@property NSString *name;
@end
@interface Star : NSObject<Named>
@property NSString *name;
@end
@implementation Flower
@end
@implementation City
@end
@implementation Star
@end
Flower *flower = [Flower new];
flower.name = @"Rose";
City *city = [City new];
city.name = @"Rome";
Star *star = [Star new];
star.name = @"Sirius";
NSArray<id<Named>> *rows = @[flower, city, star];
NSMutableArray *names = [NSMutableArray new];
for (id<Named> row in rows) {
[names addObject:row.name];
}
NSString *list = [names componentsJoinedByString:@", "];
//list is Rose, Rome, Sirius