2012-11-16 19 views
3

作为一个例子,而不是写这个:是否在块参数中向下投射一个不好的做法?

NSArray *someArray = @[@"1", @"2", @"3", @"4"]; 
[someArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 
    NSString *aString = obj; 
    // do something 
}]; 

您可以直接向下转换的对象,如果你知道块方法的常数,使其更consice:

[someArray enumerateObjectsUsingBlock:^(NSString *aString, NSUInteger idx, BOOL *stop) { 
    // do something 
}]; 

这是否违背任何最佳实践或oop原则?

+1

请注意,就像在'void *'的情况下一样,您不必施放'id'。 'NSString * aString = obj;'很好。 OMG! – 2012-11-16 19:56:57

+0

OMG!启示!我一定会在将来使用它! – Fogmeister

+0

@ H2CO3啊好点。我会更新问题的清晰度 –

回答

4

我很确定没关系。只要您知道阵列中有什么,请随时静态输入id参数。无论如何,它在一天结束时大部分都是复合糖。我总是静静地键入任何我能。它帮助我抓住错误并使事情更易于阅读。另外,正如H2CO3所指出的,物体可以被分配到一个id并且没有铸件。

+4

我当然希望这很好,我一直都这么做。 – jrturton

+0

我知道,对吧? xD – Metabble

+1

我也一直在做这件事,它告诉编译器这些对象将会是什么,并在稍后作为自己的文档。 –

相关问题