【问题标题】:Multiple Class in one file一个文件中的多个类
【发布时间】:2015-03-08 21:19:58
【问题描述】:

最近在研究在一个文件中创建多个类的可能性,为此我用一个.xib文件创建了一个UIViewController类,文件结构如下:

MyFristViewController.h

#import <UIKit/UIKit.h>

@interface MyFristViewController : UIViewController

@end

@interface MySecondViewController : UIViewController

@end

MyFristViewController.m

@implementation MyFristViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Frist View Loaded");
}

@end


@implementation MySecondViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSLog(@"Second View Loaded");
}

@end

我的疑问是:系统如何知道要执行名为 'MyFristViewController' 的类中包含的方法?

我已经尝试在界面生成器中修改自定义类,尝试更改类在文件中的位置,系统只继续运行 'MyFristViewController' 类中的现有方法,为什么?

【问题讨论】:

  • 为什么不呢?清楚地划分了哪个类是哪个。文件名完全无关;它们只是对的一种方便。完全不清楚你对什么感到惊讶。

标签: ios objective-c uiviewcontroller xib


【解决方案1】:

系统如何知道要执行名为“MyFristViewController”的类中包含的方法?

文件名无关紧要。在查看一个类时,大部分情况下使用@implementation &lt;#ClassName#&gt;@end 之间的代码。

可以通过categories and class extensions添加额外的类定制。这些也可以在同一个文件或不同文件中指定,因为(再次)文件名是不相关的。

通常,您应该为每个文件创建一个类,以便于阅读和查找您的代码。更多讨论请参见How many classes should a programmer put in one file?

【讨论】:

    【解决方案2】:

    我的疑问是:系统如何知道要执行名为“MyFristViewController”的类中包含的方法?

    因为方法位于MyFristViewController@implementation 块中。

    我已经尝试在界面生成器中修改自定义类,尝试更改文件中类的位置,系统只继续运行“MyFristViewController”类中的现有方法,为什么?

    可能是因为您已将它们链接到头文件中第一个 @interface 部分中的方法。按住 Control 并拖动到要绑定的实际方法。不清楚您实际看到的是什么问题。

    也就是说,这是一个糟糕的主意。将每个视图控制器放在自己的文件中。它可以在一个文件中使用,但正如您所见,它会造成很多混乱。

    【讨论】:

      【解决方案3】:

      我从事过在单个文件中定义多个类的项目。我讨厌这种做法。我发现它非常令人迷惑,我浪费了大量时间来寻找定义/实现类的位置。

      我建议你不要这样做。它最终变得非常混乱。

      【讨论】:

        猜你喜欢
        • 2010-09-06
        • 1970-01-01
        • 1970-01-01
        • 2012-04-18
        • 2011-01-21
        • 1970-01-01
        • 2014-08-30
        • 1970-01-01
        • 2010-12-28
        相关资源
        最近更新 更多