У меня есть два разных метода инициализации моего класса objective-c. Один по умолчанию, а второй - параметр конфигурации. Теперь я довольно зеленый, когда дело доходит до objective-c, но я реализовал эти методы, и мне интересно, есть ли лучший (более правильный / в хорошем стиле) способ обработки инициализации, чем тот, который я сделал. . В смысле, написал ли я эти функции инициализации в соответствии со стандартами и в хорошем стиле? Это просто не так Мне кажется правильным проверить наличие selfPtr
и затем вернуться на основании этого.
Ниже приведены файлы заголовка и реализации моего класса. Кроме того, если вы заметите что-то еще неправильное или злое, пожалуйста, дайте мне знать. Я разработчик C ++ / Javascript, который изучает Objective-C в качестве хобби и был бы признателен за любые советы, которые вы могли бы предложить.
#import <Cocoa/Cocoa.h>
// class for raising events and parsing returned directives
@interface awesome : NSObject {
// silence is golden. Actually properties are golden. Hence this emptiness.
}
// properties
@property (retain) SBJsonParser* parser;
@property (retain) NSString* eventDomain;
@property (retain) NSString* appid
// constructors
-(id) init;
-(id) initWithAppId:(id) input;
// destructor
-(void) dealloc;
@end
#import "awesome.h"
#import "JSON.h"
@implementation awesome
- (id) init {
if (self = [super init]) {
// if init is called directly, just pass nil to AppId contructor variant
id selfPtr = [self initWithAppId:nil];
}
if (selfPtr) {
return selfPtr;
} else {
return self;
}
}
- (id) initWithAppId:(id) input {
if (self = [super init]) {
if (input = nil) {
input = [[NSString alloc] initWithString:@"a369x123"];
}
[self setAppid:input];
[self setEventDomain:[[NSString alloc] initWithString:@"desktop"]];
}
return self;
}
// property synthesis
@synthesize parser;
@synthesize appid;
@synthesize eventDomain;
// destructor
- (void) dealloc {
self.parser = nil;
self.appid = nil;
self.eventDomain = nil;
[super dealloc];
}
@end
Спасибо!