2013-04-20 48 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++。