【问题标题】:IOS - The correct way for using #import classesIOS - 使用#import 类的正确方法
【发布时间】:2012-09-15 19:39:07
【问题描述】:

我正在编写一个测试项目来学习用代码编写所有内容。我想这样做是为了更好地了解 Storyboard 中的元素在幕后为我做了什么

在我的项目中,我有几个 UIViewControllers 共享相同的 UI 元素。例如,我在屏幕顶部有一个 UITool 栏,里面有几个按钮。

现在我想把 UIToolbar 放在一个单独的类中,这样我就不必把它全部写出来或复制粘贴到每个控制器中。

现在我知道我可以这样做:

#import "General_Add_ons.h" //the UIToolbar is properly set up in this file

@interface FirstViewController : General_Add_ons  

然后我就用[self topToolBar]; //topToolBar 是工具栏的名字

现在我只想澄清这是最好的还是唯一的方法?

我觉得我应该能够做到这一点:

    General_Add_ons *gao = [[General_Add_ons alloc] init];
    [gao topToolbar];

我是不是想错了?如果我有多个外部类,第一种方法似乎会受到限制。

提前致谢。

【问题讨论】:

    标签: objective-c ios class import


    【解决方案1】:

    您的方法似乎是正确的。如果您有多个 UIViewController 实例需要相同的 UI 元素或其他控制器代码,您可以将这些元素放在 UIViewController 子类中。在您的情况下,我相信 General_Add_ons 类是您的子类将从中继承的 UIViewController

    这个类(你的General_add_ons)应该有一个可重用工具栏的属性,例如

    @property (nonatomic, strong) UIToolbar *toolbar;
    

    顺便说一句,Cocoa 中的类名,按照惯例是:前缀+大写单词,不带下划线。 Apple 在naming conventions 上有很好的参考。

    编辑

    为澄清起见,您可以根据需要多次对自定义子类进行子类化。例如,在我的代码中,我有一个类CCFViewController,它封装了我希望所有视图控制器都具有的常见属性和行为。那么,在项目中,所有视图控制器都继承自该父控制器。同样,您的工具栏将存在于超类中,并且其他控制器从它继承。

    【讨论】:

    • 感谢有关命名约定的提示 - 我在制作官方应用程序时确实使用了正确的命名约定:-) 所以如果我理解正确,第一种方式是最好的方式吗?
    • 是的,我认为第一种方法就是你想要的。在第二种情况下,您直接实例化超类。因为听起来General_add_onsUIViewController 的子类,所以这是不必要的。
    • 好的 - 很抱歉再打扰一次,说如果我有多个 UiViewControllers 因为我想以某种方式组织事物,而不是第一种方式只允许我做 1 个子类,对吧?我不能从多个类继承??
    • 如果General_add_onsUIViewController 子类,那么您可以根据需要对其进行多次子类化。您甚至可以将子类等子类化。至于您的第二个问题-正确,ObjC 不进行多重继承。谢天谢地。
    • 酷我想我明白了:-) 更多练习:-)
    【解决方案2】:

    我不是 100% 确定,但我认为你应该这样尝试:

    General_Add_ons *gao = [[General_Add_ons alloc] init];
    [gao.topToolbar anypossiblemethodcall];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-26
      • 1970-01-01
      • 1970-01-01
      • 2013-11-06
      • 2011-08-06
      相关资源
      最近更新 更多