我想在 objective-c 中做这样的事情:

@protocol MyProtocol <NSObject>
-(void)sampleMethod;
@end

@interface SampleClass1 : NSObject
@end

@interface SampleClass2
@property NSMutableArray* array;
@end

然后当我这样做时:
[array addObject:[SampleClass1 class]];

这应该发出警告,因为SampleClass1不符合协议MyProtocol。提前致谢。

最佳答案

对于这样的事情,您必须向NSMutableArray添加一个类类别:

@interface NSMutableArray (AddConformingObject)

- (void)addConformingObject:(id<MyProtocol>)object;

@end

@implementation NSMutableArray (AddConformingObject)

- (void)addConformingObject:(id<MyProtocol>)object {
    [self addObject:object];
}

@end

然后只需使用addConformingObject:代替addObject:即可。

关于ios - 在“类”对象上实现协议(protocol)一致性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25171683/

10-11 20:01