通常,您定义 init 或 initWith... 方法并在方便的构造函数中调用它们,如下所示:
@implementation MyClass1 : NSObject
@synthesize n, s;
-(id)init
{
self = [super init];
if (self) {
self.n = 1;
}
return self;
}
-(id)initWithString:(NSString *)s
{
self = [self init];
if (self) {
self.s = s;
}
return self;
}
+(id)myClass
{
return [[self alloc] init];
}
+(id)myClassWithString:(NSString *)s
{
return [[self alloc] initWithString:s];
}
@end
但我认为可以在不定义 init 或 initWith... 方法的情况下定义方便的构造函数,如下所示:
@implementation MyClass2
@synthesize n, s;
+(id)myClass
{
MyClass2 *obj = [[self alloc] init];
obj.n = 1;
return obj;
}
+(id)myClassWithString:(NSString *)s
{
MyClass2 *obj = [self myClass];
obj.s = s;
return obj;
}
@end
在不定义 init 方法的情况下定义方便的构造函数是不好的做法吗?
如果这是不好的做法,你能告诉我缺点或问题吗?