在目标c中,是否可以为类变量设置默认值?

我已经在stackoverflow和google搜索了ans,但没有得到我需要的东西。 我在找什么: 有没有办法为类的类属性设置默认值? 就像我们在Java中可以做的那样,在类的构造函数中,例如 -
MyClass(int a, String str){//constructor
  this.a = a;
  this.str = str;

  // i am loking for similar way in obj-C as follows 
  this.x = a*5;
  this.y = 'nothing';
}
我为什么要找: 我有一个约有15个属性的课程。当我实例化类时,我必须使用一些默认值设置所有这些变量/属性。所以这使得我的代码变得繁重而复杂。如果我可以为该类中的那些实例变量设置一些默认值,那么必须减少此代码复杂性/冗余。 我需要你的帮助。 在此先感谢您的帮助。 -Sadat     
已邀请:
编写init,它正在执行完全初始化的所有工作。 然后根据需要编写尽可能多的具有不同参数集的启动器(但请想一想:你真的需要这个或那个吗?)。不,不要让他们做这个工作。让它们填写所有默认值(你没有提供给消息的那些,这个消息处理implementatino)并将它全部交给第一个。 第一个启动器称为指定启动器。并且一定不要错过Multiple Initializers和Designated Initializer。 永远不要忽视指定的! 问候     
如果你不想指定参数,
- (MyClass *)init {
    if (self = [super init]) {
        a = 4;
        str = @"test";
    }
    return self;
}
然后当你做
MyClass *instance = [[MyClass alloc] init]
时,它会设置ivars的默认值。 但我不明白为什么你发布带有参数的构造函数,但你不想使用它们。     
在类的界面中:
@interface YourClass : NSObject {
    NSInteger a;
    NSInteger x;
    NSString  *str;
    NSString  *y;
}

- (id)initWithInteger:(NSInteger)someInteger string:(NSString *)someString;

@end
然后,在实施中:
- (id)initWithInteger:(NSInteger)someInteger string:(NSString *)someString {
    if (self = [super init]) {
        a = someInteger;
        str = [someString copy];

        x = a * 5;
        y = [@"nothing" retain];
    }

    return self;
}
NSInteger
int
long
的typedef,具体取决于架构。)     

要回复问题请先登录注册