2009-07-10 29 views
2

Ich mache ein einfaches Programm in Objective-C. Es hat eine Klasse mit vielen Methoden. Ich würde nur die Methoden in einer anderen Datei setzen möchte ... so konnte ich die folgendeSehr einfache XCode Objective-C Frage

- (void) myfunc1 {...} 
- (void) myfunc2 {...} 
// more functions 

auf eine andere Datei und ersetzen Sie die oben w/so etwas wie

#include "myNewFile.something" 

Mir geht es gut bewegen w/Setzen der Anweisung #include (oder was auch immer) genau in der ursprünglichen Datei.

Wie kann ich das tun?

+0

Wahrscheinlichkeiten sind, dass, wenn eine Klasse genug Methoden hat, um zu rechtfertigen, es in Akten zu teilen, es als mehr als eine Klasse besser strukturiert würde. –

Antwort

2

Sie müssen Ihre Methoden in verschiedene "Kategorien" aufteilen, die jeweils ihre eigenen h- und m-Dateien erhalten. Sie benötigen auch eine h und m-Datei für die Klasse selbst. Hier ist ein einfaches, kleines Beispiel, das Ihnen zeigen wird, was Sie tun müssen.

TestClass.h

#import <Cocoa/Cocoa.h> 
@interface TestClass : NSObject { 
} 
@end 

TestClass.m

#import "TestClass.h" 
@implementation TestClass 
@end 

Testclass + Category1.h

#import <Cocoa/Cocoa.h> 
#import "TestClass.h" 
@interface TestClass(Category1) 
-(void)TestMethod1; 
@end 

Testclass + Category1.m

#import "TestClass+Category1.h" 
@implementation TestClass(Category1) 
-(void)TestMethod1 { 
NSLog(@"This is the output from TestMethod1"); 
} 
@end 

Testclass + Category2.h

#import <Cocoa/Cocoa.h> 
#import "TestClass.h" 
@interface TestClass(Category2) 
-(void)TestMethod2; 
@end 

Testclass + Category2.m

#import "TestClass+Category2.h" 
@implementation TestClass(Category2) 
-(void)TestMethod2 { 
NSLog(@"This is the output from TestMethod2"); 
} 
@end 

dann in jeder Datei Ihrer Klasse verwendet, werden Sie

#import "TestClass.h" 
#import "TestClass+Category1.h" 
#import "TestClass+Category2.h" 

verwenden Jetzt können Sie erstellen eine Instanz der Klasse TestClass und es werden alle Methoden von category1 und category2 verwendet. Verwenden Sie einfach

TestClass* test = [[TestClass alloc] init]; 
[test TestMethod1]; 
[test TestMethod2]; 
0

Sie müssen eine Headerdatei erstellen und diese entsprechend einbeziehen.

Wenn Sie Ihren gesamten Code in "newFile.m" verschieben, erstellen Sie "newFile.h" und fügen Sie alle Ihre Methodensignaturen in die Headerdatei ein. Dann in der alten Datei "#include oldFile.h".