如何从ObjC中的类方法设置实例变量

时间:2010-07-14 09:39:28

标签: objective-c

我有一个单例初始化器,它是一个类方法。我想从中设置实例变量数据。我怎么能这样做?

4 个答案:

答案 0 :(得分:3)

可以使用结构指针运算符访问实例变量 您不需要属性:

+ ( MyClass * )sharedInstance
{
    @synchronized( self )
    {
        if( instance == nil )
        {
            instance       = [ [ self alloc ] init ];
            instance->iVar = @"someValue";
        }
    }
    return instance;
}

答案 1 :(得分:0)

您需要一个实例来调用实例方法。因此,要么创建实例并调用其方法,要么使用类方法。

  

我应该更改这些实例方法吗?   是班级方法吗?

如果方法与实例无关,那么将它们更改为类方法可能是个好主意。

答案 2 :(得分:0)

此init方法示例。这就是我这样做的方式......

-(id)initWithName:(NSString *)name {
    if(self = [super init]) {
       self.name = name;
    }
    return self;
}

在这种情况下,实例变量也需要是一个属性。否则你不能写self.name

桑德罗

答案 3 :(得分:0)

比我不知道你的意思。要设置实例变量吗?那是可能的。 (参见下面的例子)但是如果你想访问一个,那是不可能的。因为他们在课堂上不存在。它们只存在于一个物体中...... 例如:

+(YourClass *)YourClassWithName:(NSString *)name {
   if(self = [super init]) {
      self.name = name;
   }
   return [self autorelease];
}

如果你不是那个意思,我不知道你的意思。 ^^