作为一个例子,而不是写这个:
NSArray *someArray = @[@"1", @"2", @"3", @"4"];
[someArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSString *aString = obj;
// do something
}];
如果您知道块方法中的常量,可以直接向下转换对象,以使其更加简洁:
[someArray enumerateObjectsUsingBlock:^(NSString *aString, NSUInteger idx, BOOL *stop) {
// do something
}];
这是否违反任何最佳做法或oop原则?
答案 0 :(得分:4)
我很确定这很好。只要你知道数组中的内容,就可以自由地静态输入id
个参数。无论如何,它在一天结束时主要是语法糖。我总是静态地输入任何我能做的。它可以帮助我捕获错误并使事情更容易阅读。此外,正如H2CO3指出的那样,可以将对象分配给id
并返回而不进行强制转换。