2015-03-08 7 views
0

Недавно я изучает возможность создания нескольких классов только в одном файле, для этого я создал класс UIViewController с .xib файл, структура файла выглядит следующим образом:Multiple класса в одном файле

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» класса почему?

+1

Почему нет? Четко разграничен, какой класс есть. Имена файлов совершенно неактуальны; они просто удобны для вас. Не совсем понятно, на что вы удивлены. – matt

ответ

0

Я сомневаюсь: как система знает, что нужно выполнять методы, содержащиеся в классе «MyFristViewController»?

Поскольку методы находятся в блоке @implementationMyFristViewController.

Я уже пытался изменить пользовательский класс в интерфейсе строитель, пытался изменить положение классов в файле, и система продолжает работать только существующие методы внутри класса в «MyFristViewController» почему?

Возможно, потому что вы связали их с методами в первом @interface разделе вашего файла заголовка. Управлять перетаскиванием до фактического метода, к которому вы хотите привязать. Неясно, какую проблему вы действительно видите.

Тем не менее, это ужасная идея. Поместите каждый контроллер представления в свой собственный файл. Он будет работать в одном файле, но он будет создавать много путаницы, как вы видите.

1

Как система знает, что нужно выполнять методы, содержащиеся в классе «MyFristViewController»?

Имена файлов несущественны. При взгляде на класс, по большей части, используется код между @implementation <#ClassName#> и @end.

Дополнительная настройка классов может быть добавлена ​​через categories and class extensions. Они также могут быть указаны в том же файле или в разных файлах, потому что (опять же) имена файлов неактуальны.

Как правило, у вас должен быть один класс для каждого файла, чтобы было легко читать и находить код. См. How many classes should a programmer put in one file? для дополнительного обсуждения.

0

Я работал над проектами, которые определяют несколько классов в одном файле. I loathe этот тренировка. Я нахожу это очень дезориентирующим, и я трачу много времени на поиск того, где классы определены/реализованы.

Я бы посоветовал вам не делать этого. Это заканчивается очень запутанным.

Смежные вопросы