2012-11-16 21 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

我也一直在做這件事,它告訴編譯器這些對象將會是什麼,並在稍後作爲自己的文檔。 –

相關問題