2013-04-20 51 views
0
id<UIView> views = @[one, two, three]; 
NSInteger object = [views lastObject]; // Compiler will warn me that `views` stores only UIViews 

我需要走多遠才能執行此操作?有人有擴展clang支持類似功能的經驗嗎?帶有靜態類型檢查的單態陣列

Similar: nsmutablearray-force-the-array-to-hold-specific-object-type-only

+0

等等。你願意擴展編譯器......你自己? – zneak 2013-04-20 00:46:32

+0

祝你好運... :-) – fumoboy007 2013-04-20 00:46:47

+0

更好的解決方案是爲了改善它被正式添加到語言中的機會而開放了衆多雷達之一(http://openradar.appspot.com/radar?id= 2731402就是一個例子)。以這種方式修改ObjC實際上並不是我會推薦獨立完成的。 – 2013-04-20 00:50:27

回答

0

我曾想過這也是,雖然最後我問它實際上使我更有效率。 Objective-C對我來說似乎是一種非常實用的語言,它具有的功能非常實用,像block這樣的功能非常有用,但根據我的經驗,命名空間和類型化數組等功能並非如此。我添加了很多NSAssert來檢查我的代碼。通常我的可變集合包含在其他類中,所以我對可以添加到它們的內容有很多控制,但也許這就是我採用的模式,因爲我沒有類型集合?

0

那麼,在技術上你已經可以...

UIView *views[] = {one, two, three}; 
NSInteger object = views[2]; 

或者,更有效,你可以使用的Objective-C++。