ios - 在 Obj-C 中,我如何制作一个 switch 语句来评估类,而不仅仅是数字?

标签 ios objective-c switch-statement

在 Obj-C 中,开关只能评估数字。我希望能够使用它来比较对象的类别,例如:

switch (currentSubViewController.class) 
{
     case UITableViewController.class :
          <do stuff>
          break;
     case UICollectionViewController.class :
          <do stuff>
          break;
}

有什么办法可以实现吗?我真的很想能够使用一个 switch,因为它使得不同案例的阅读变得如此容易,而且我可以在未来的任何时候添加更多案例。有什么想法吗?

最佳答案

如本 forum post 中所述你最好应用 Liskov Substitution Principle并把 <do stuff>实际类中的逻辑,然后调用所有这些类继承的父类(super class)共享的方法(如果您计划在完全不同的类之间共享此逻辑,则调用 Obj-C 中的协议(protocol))。

这封装了每个实现/子类中的所有逻辑,无需更高级别的类需要担心您可能拥有的每个可能的实现。这提高了可维护性,并且在面向对象编程中比普通的旧过程编程更常见。

关于ios - 在 Obj-C 中,我如何制作一个 switch 语句来评估类,而不仅仅是数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16640543/

相关文章:

ios - 将 inputView 背景颜色从模糊灰色更改为其他任何颜色

iphone - NSMutableURLRequest 在正文中添加额外信息,导致 Content-Length 不正确

iphone - objective-c 获取一个类的所有属性(反射)

ios - 解析不返回对象中包含的查询约束

c - 我用什么代码来询问数量和付款?

PHP 0 of type string > then 0 of type string equals true?

ios - ImageView 导致尴尬的挂起?

ios - 为什么无法通过iOS的网络扩展隧道提供程序正确路由流量?

objective-c - magicalrecord 删除非导入数据

c++ - 使编译器假设所有情况都在没有默认情况下的开关中处理