在 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/