iOS에서 atomic을 사용하는 것은 틀림없이 라인이 안전합니까?왜?

559 단어
- (void)setProp:(NSString *)newValue {    
  [_prop lock];    
  _prop = newValue;    
  [_prop unlock];
}

내 이해로: 1.이곳의 라인 안전은 Getter,setter에 의해 결정됩니다.
예를 들어 @property(nonatomic,copy) NSString*str의 경우self를 호출합니다.str = @"HELLO,GUY"; 만약 다중 스레드라면, 한 스레드가setter 방법을 실행할 때 문자열 복사와 관련이 있고, 다른 스레드가 읽으면, 절반의 데이터, 즉 가베이지 데이터를 읽을 수 있다.
2. 또한 Getter,setter의 라인만 안전합니다.예를 들어 @property(atomic,strong) NSMutable Array *arr;
만약 한 라인이 데이터를 순환해서 읽는다면, 한 라인이 데이터를 순환해서 쓰면 틀림없이 메모리 문제가 발생할 것이다.이것은 setter, Getter와 관계가 없기 때문이다.

좋은 웹페이지 즐겨찾기