2010-07-14 8 views

답변

2

인스턴스 변수는 구조체 포인터 연산자를 사용하여 액세스 할 수 있습니다.
해당 속성이 필요하지 않습니다.

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

그 작품, 감사합니다 :) – Spanky

0

인스턴스 메소드를 호출하려면 인스턴스가 필요합니다. 따라서 인스턴스를 만들고 메서드를 호출하거나 클래스 메서드를 사용합니다.

을 클래스 메소드로 변경해야합니까?

메소드가 인스턴스와 관련이없는 경우 클래스 메소드로 변경하는 것이 좋습니다.

+0

감사합니다. 클래스 메소드에서 인스턴스 메소드를 호출 할 수 있습니다. 인스턴스 변수는 문제를 일으 킵니다. 클래스 메서드에서 인스턴스 변수에 대한 값을 설정하는 방법은 무엇입니까? 어떻게 그 클래스 메소드에서 사용할 수 있도록 변수를 선언 할 수 있습니까? – Spanky

+0

글쎄, 클래스가 싱글 톤이기 때문에 인스턴스를 생성 한 다음 인스턴스 변수에 액세스 할 수 있습니다. 그게 당신을위한 옵션이 아니라면, 내가 생각할 수있는 유일한 해결책은 일반적으로 못생긴 정적 변수를 사용하는 것입니다. – zvone

0

이 init 메소드 예입니다. 그것은 내가하는 방식입니다 ...

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

이 경우 인스턴스 변수도 속성이어야합니다. 그렇지 않으면 self.name을 쓸 수 없습니다.

샌드로

+0

Groovy,하지만 메소드가 인스턴스 메소드 "-"인데 클래스 메소드 "+"에서 인스턴스 변수에 액세스하려고합니다. – Spanky

0

나는 무엇을 의미하는지 모르겠다. 인스턴스 변수를 설정 하시겠습니까? 가능합니다. (아래 예 참조)하지만 액세스하려는 경우 불가능합니다. 그들은 수업에 존재하지 않기 때문에. 당신이 그 뜻하지 않은 경우

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

, 당신이 무엇을 의미하는지 모르는 : 그들은 단지 ... 객체에 예 존재한다.^

관련 문제