태그 보관물: cocoa

cocoa

“Nonatomic”속성은 무엇을 의미합니까? 원자”는 무엇을 의미합니까? @property(nonatomic, retain) UITextField *theUsersName; 원자와

이 코드에서 “비 원자”는 무엇을 의미합니까?

@property(nonatomic, retain) UITextField *theUsersName;

원자와 비원 자의 차이점은 무엇입니까?

감사



답변

Apple Docs를 살펴보십시오 .

기본적으로이라고 nonatomic말하고을 사용하여 접근 @synthesize자를 생성 하면 여러 스레드가 속성을 한 번에 변경 / 읽으려고하면 불량이 발생할 수 있습니다. 부분적으로 작성된 값 또는 초과 릴리스 / 보존 된 오브젝트를 가져 오면 쉽게 충돌 할 수 있습니다. (그러나 이것은 원자 접근 자보다 훨씬 빠릅니다.)

기본값을 사용하는 경우 ( atomic; 키워드는 없었지만 현재 는 있음 ) @synthesized 메소드는 객체 레벨 잠금을 사용하여 단일 특성에 대한 여러 읽기 / 쓰기가 직렬화되도록합니다. Apple 문서가 지적했듯이, 이것이 전체 객체가 스레드로부터 안전하다는 것을 의미하지는 않지만 개별 속성 읽기 / 쓰기는 있습니다.

물론을 사용하지 않고 자신의 접근 @synthesize자를 구현하는 경우 이러한 선언은 속성이 스레드 안전 방식으로 구현되는지 여부에 대한 의도를 표현하는 것 외에는 아무것도하지 않는다고 생각합니다.


답변

많은 기사와 StackOverflow 게시물을 읽은 후 변수 속성 속성을 확인하기 위해 데모 앱을 만든 후 모든 속성 정보를 하나로 묶기로 결정했습니다.

  1. 원자 // 기본
  2. 비 원자
  3. strong = 보유 // 기본
  4. 약한 = unsafe_unretained
  5. 유지
  6. // 디폴트 할당
  7. unsafe_unretained
  8. 읽기 전용
  9. readwrite // 기본

아래는 위에서 언급 한 모든 속성을 찾을 수있는 자세한 기사 링크입니다. 여기에 최고의 답변을 해주신 모든 분들께 감사드립니다 !!

iOS의 변수 속성 또는 수정 자

  1. 원자
    • 원자는 하나의 스레드 만 변수 (정적 유형)에 액세스 함을 의미합니다.
    • 원자는 스레드 안전합니다.
    • 그러나 성능이 느립니다.
    • 원자가 기본 동작입니다.
    • 가비지 수집되지 않은 환경 (예 : retain / release / autorelease를 사용하는 경우)의 원자 접근자는 다른 스레드가 값의 올바른 설정 / 가져 오기를 방해하지 않도록 잠금을 사용합니다.
    • 실제로는 키워드가 아닙니다.

예 :

@property (retain) NSString *name;

@synthesize name;
  1. 비 원자
    • 비 원자 (nonatomic)는 다중 스레드가 변수 (동적 유형)에 액세스 함을 의미합니다.
    • 비원자는 스레드 안전하지 않습니다.
    • 그러나 성능이 빠릅니다.
    • 비원자는 기본 동작이 아닙니다. 속성 속성에 비 원자 키워드를 추가해야합니다.
    • 서로 다른 두 프로세스 (스레드)가 동시에 동일한 변수에 액세스 할 때 예기치 않은 동작이 발생할 수 있습니다.

예:

@property (nonatomic, retain) NSString *name;

@synthesize name;


답변

스레드 안전성에 대해 이미 언급 한 것 외에도 원자 이외의 속성은 원자 접근 자보다 빠릅니다. 일반적으로 걱정할 필요는 없지만 명심하십시오. 이러한 이유로 Core Data 생성 속성은 부분적으로 비원 자적입니다.


답변

다중 스레드 프로그램에서 원자 작업은 부분적으로 중단 될 수 없지만 비 원자 작업은 중단 될 수 있습니다.

따라서 방해를받지 않는 비 원자적인 중요한 작업이있는 경우 뮤텍스 (또는 이와 유사한 것)를 사용해야합니다.


답변

“atomic”을 지정하면 생성 된 액세스 기능에 동시 업데이트를 방지하기위한 추가 코드가 있습니다.


답변

일반적으로 원 자성이란 속성에 대한 쓰기 / 읽기가 단일 작업으로 발생 함을 의미합니다.
원자력 운영


답변

아래 기사를 읽으면이 물건을 다룰 수 있습니다.

스레딩 비원 자의 목적으로 설명

비 원자-스레드 안전 아님

atomic-스레드 안전-기본 속성 속성입니다.