请考虑以下事项:
@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更安全,我是否可以在Xcode中启用一些相关的叮当错误或警告?
使现代化我不想用一个非常类似的问题来制造另一个问题。这真烦人。看看:
NSArray<NSString*>* strings = @[@"Hello"];
for (NSNumber* num in strings)
{
[num unsignedIntegerValue];// unrecognized selector crash!!!!
}
连警告都没有。什么。。。?在重构过程中,让这样的代码保持不变是很容易的。我真的很想提醒我类似的情况。