只是要确认一下,在Objective-C中创建指定初始值设定项的正确方法是什么?
这是启动ivars的正确方法吗?
你能建议我改进一下吗?
Person.h
@interface Person : NSObject
@property (nonatomic, retain) NSString *name;
@property (nonatomic, assign) int age;
@property (nonatomic, assign) NSString *sex;
@property (nonatomic, assign) int weight;
-(id)initWithName:(NSString *)name;
-(id)initWithName:(NSString *)name age:(int)age;
-(id)initWithName:(NSString *)name age:(int)age sex:(NSString *)s;
-(id)initWithName:(NSString *)name age:(int)age sex:(NSString *)s andWeight:(float)w;
@end
Run Code Online (Sandbox Code Playgroud)
Person.m
@implementation Person
@synthesize name = _name;
@synthesize sex = _sex;
@synthesize age = _age;
@synthesize weight = _weight;
-(id)initWithName:(NSString *)name age:(int)age sex:(NSString *)s andWeight:(float)w
{
if(self = [super init])
{
[self setName:name];
[self setAge:age];
[self setSex:s];
[self setWeight:w];
}
return self;
}
-(id)initWithName:(NSString *)name age:(int)age sex:(NSString *)s
{
return [self initWithName:name age:age sex:s andWeight:0];
}
-(id)initWithName:(NSString *)name age:(int)age
{
return [self initWithName:name age:age sex:0];
}
-(id)initWithName:(NSString *)name
{
return [self initWithName:name age:0];
}
-(id)init
{
return [self initWithName:nil];
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 !
在我看来这是正确的.您可以通过从任何其他方法调用主init方法来提高效率,因此您不会链接调用,但我认为没有太大的区别.
| 归档时间: |
|
| 查看次数: |
4411 次 |
| 最近记录: |