2011-10-16 2 views

답변

6

세터와 게터를 모두 작성해야합니다. 저장 용량을 확보하려면 여전히 @synthesize 수 있습니다. 예컨대 :

//.h 
@property (strong) id x; 

//.m 

@synthesize x = _x; 
- (id)x 
{ 
    @synchronized(self) 
    { 
     if (!_x) 
     { 
      _x = [[MyX alloc] init]; 
     } 
     return _x; 
    } 
} 

- (void)setX:(id)x 
{ 
    @synchronized(self) 
    { 
     _x = x; 
    } 
} 

당신은 ARC없이 추가 메모리 관리를 수행해야 할 수 있습니다 및 다른 동기화 방법을 (대신 self의) 다른 잠금 장치를 만들거나 사용할 수 있지만, 그것은 당신에게 요점을 줄 것이다.

+0

자기 대신에 다른 잠금 장치를 만드는 것이 좋습니다. 점은 무엇인가? – dontWatchMyProfile

+0

x와 y가 모두 잠겨 있어도 동시에 액세스 할 수는 없습니다. 많은 경우 서로 다른 잠금을 가질 필요는 없겠지만 많은 스레드간에 공유하고 객체를 처리하고 많은 특성을 갖는다면 성능이 향상 될 수 있습니다. 몇 가지 테스트를 수행했는데 성능에 만족스럽지 않고 테스트에서 병목 현상으로 강조하는 경우에만 수행하십시오 ... – hypercrypt

관련 문제