在通用类型不匹配的情况下,如何使Xcode产生错误或警告?

时间:2019-01-18 12:48:13

标签: objective-c xcode generics clang

请考虑以下内容:

@interface Test : NSObject

+ (void)testBlock:(void(^)(NSArray<NSString*>*))aBlock;

@end

@implementation Test

+ (void)testBlock:(void (^)(NSArray<NSString *> *))aBlock
{
    aBlock(@[@"Hello", @"World"]);
}

@end

然后:

[Test testBlock:^(NSArray<NSNumber*>* arr){

        [arr.firstObject unsignedIntegerValue];
    }];

这是崩溃,但是编译器甚至没有警告我,而我想得到一个错误。可能吗我可以在Xcode中启用一些相关的Clang错误或警告,以使其更安全吗?

更新。我不想创建另一个问题非常相似的问题。真烦人。看看:

NSArray<NSString*>* strings = @[@"Hello"];

for (NSNumber* num in strings)
{
    [num unsignedIntegerValue];// unrecognized selector crash!!!!
}

甚至没有警告。什么...?在重构过程中不更改此类代码很容易。我真的很想让编译器警告我这种情况。

0 个答案:

没有答案