Alle Beispiele von Kategorien, die ich gesehen habe, verwenden eine Objective-C-Klasse anstelle einer benutzerdefinierten Klasse. Zum Beispiel: NSMutableArray, NSArray, NSString. Ich möchte eine Kategorie für eine benutzerdefinierte Klasse erstellen. Hier ist ein nutzloses Beispiel, das ich gerade erstellt testen, aber nicht Compilation:Können Kategorien nur für Objective-C-Klassen erstellt werden?
//person.h
@interface Person (aCategory) : NSObject {
NSString *MyName;
NSString *webAddress;
}
@property(nonatomic, retain) NSString *MyName;
@end
//person.m
#import "Person+aCategory.h"
@implementation Person
@synthesize MyName;
@end
Und die Kategorie Definition:
@interface aCategory : NSObject {
NSString *webAddress;
}
@property(nonatomic, retain) NSString *webAddress;
- (void)changeWebAddress;
@end
//in aCategory.h
#import "aCategory.h"
@implementation aCategory
@synthesize webAddress;
- (void) changeWebAddress{
self.webAddress = @"http://www.abc.com";
}
@end
Dies wird die folgenden Fehler und Warnung geben:
error: Person+aCategory.h: no such file or directory
warning: cannot find interface declaration for Person
error: no declaration of property 'MyName' found in interface
Gibt es eine Möglichkeit, dies zu tun?
>> Das hier Problem ist, dass Sie, was schrieben nicht aus der Ferne ist der richtige Weg um eine Kategorie definieren << Ok.. Kannst du mein Beispiel korrigieren? – 4thSpace