У меня есть два разных метода для инициализации моего класса target-c.Один является значением по умолчанию, а другой принимает параметр конфигурации.Теперь я довольно зелен, когда дело доходит до target-c, но я реализовал эти методы, и мне интересно, есть ли лучший (более правильный / в хорошем стиле) способ обработки инициализации, чем способ, которым я это сделал,Смысл, я написал эти функции инициализации в соответствии со стандартами и хорошим стилем?Просто нехорошо проверять наличие selfPtr
и затем возвращаться на основании этого.
Ниже приведены заголовок моего класса и файлы реализации.Кроме того, если вы обнаружите что-то еще, что является неправильным или злым, пожалуйста, дайте мне знать.Я - разработчик C ++ / Javascript, который изучает target-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
Спасибо!