Я знаю, что первое, что нужно сделать, когда у кого-то возникает вопрос с Obj-C, - это прочитать документы Apple.И я сделал.Я читаю стр.95-стр.102 Руководства по основам какао.Так что это то, что я знаю о создании составных объектов из кластеров классов.
- Подклассы кластеров классов должны выполняться, если необходимо изменить предоставляемые функции.
- Составные объекты должны переопределять примитивные методысуперкласса.(И я также читал, что примитивные методы суперкласса суперкласса также должны быть переопределены.)
Поэтому я применил то, что знаю.Вот мой код ...
#import <Foundation/Foundation.h>
@interface GOObjectKeyName : NSMutableString
{
NSMutableString *embeddedNSMutableString;
}
//+ GOObjectKeyName;
//- init;
//From NSString
- (NSUInteger) length;
// From NSString
- (unichar) characterAtIndex: (NSUInteger) index;
// From NSString
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange;
// From NSMutableString
- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString;
//- (void) dealloc;
@end
#import "GOObjectKeyName.h"
@implementation GOObjectKeyName
/*
+ GOObjectKeyName
{
return [[[self alloc] init] autorelease];
}
- init
{
self = [super init];
if (self)
{
embeddedNSMutableString = [[NSMutableString allocWithZone: [self zone]] init];
}
return self;
}
*/
- (NSUInteger) length
{
return [embeddedNSMutableString length];
}
- (unichar) characterAtIndex: (NSUInteger) index
{
return [embeddedNSMutableString characterAtIndex: index];
}
- (void)getCharacters:(unichar *)buffer range:(NSRange)aRange
{
[embeddedNSMutableString getCharacters: buffer range: aRange];
}
- (void)replaceCharactersInRange:(NSRange)aRange withString:(NSString *)aString
{
[embeddedNSMutableString replaceCharactersInRange: aRange withString: aString];
}
/*
- (void) dealloc
{
[embeddedNSMutableString release];
[super dealloc];
}
*/
@end
Комментируемые методы комментируются, потому что я не был уверен, были ли они необходимы.Я просто записал их, потому что видел их в примере.И вы также можете увидеть, что это в основном другой класс NSMutableString.Но не волнуйтесь, в этом есть большая цель, я просто хочу знать, что основы правильны, прежде чем я продолжу, так как это мой первый раз с составными объектами.И, как вы знаете ... это не работает !!Пожалуйста, поймите мое разочарование после нескольких часов проб и ошибок.Если бы кто-то мог направить меня сюда, это было бы большим облегчением.
О, и если вы не возражаете, у меня есть еще один маленький вопрос.Пример на яблочных документах описывает аналогию NSNumber.Но действительно ли NSNumber более эффективен, чем использование int, char и других фундаментальных типов?Просто любопытно.