In Objective-C hat man so nette Sachen wie Categories, mit denen man (ähnlich wie bei Ruby) Standardklassen um custom methods erweitern kann - eine Sache, die Java man z.B. in Java nicht kann. Von daher bezweifle ich mal, dass man das ganze Ding eher unbrauchbar ist, wenn man wirklich effizient programmieren möchte.
Hä? Wofür gibts Vererbung sonst in Java und so gut wie jeder anderen objektorientieren Sprache? Wofür brauch ich da jetzt Categories? ^^
Ganz einfach:
Wenn du eine Methode schreibst, die dir z.B. in der Standard-String Klasse fehlt, dann baut man in Ruby ein Module bzw. in Objective-C eine Category und kannst es / sie sofort mit der normalen Standardklasse verwenden.
// Definition
@interface NSString (MyStringAdditions)
- (NSString *)myCoolMethod;
@end
// Implementierung
@implementation NSString (MyStringAdditions)
- (NSString *)myCoolMethod
{
...
}
@end
// Benutzung
NSString *str = [[NSString alloc] initWithString:@"Hello, World."];
NNString *newStr = [str myCoolMethod];Bei Java müsstest du erstmal die Klasse ableiten und dann durch dein gesamtes Projekt gehen und an jeder Stelle, an der du diese Methode gebrauchen könntest, die Standardklasse durch die neue abgeleitete Klasse ersetzen:
class MyString extends String
{
pulic String myCoolMethod()
{
...
}
}
// Benutzung
MyString str = new MyString("Hello, World.");
String newStr = str.myCoolMethod();Und bei Projekten mit > 5000 loc find ich Categories wesentlich komfortabler und weniger anfällig für Fehler



Sign In
Create Account
Back to top










