programing

목표-C 선언 @ 속성 속성(비원자, 복사, 강, 약)

bestprogram 2023. 5. 12. 22:48

목표-C 선언 @ 속성 속성(비원자, 복사, 강, 약)

제가 언제 속성을 수 요?nonatomic,copy,strong,weak등등, 신고된 재산에 대해, 그리고 각각이 무엇을 하는지 설명합니다.어떤 종류의 예도 좋을 것입니다.ARC를 사용하고 있습니다.

원자가 아닌

Nonatomic 를 통해 스레드 세이프 루틴을 생성하지 않습니다.@synthesize악세사리 atomic스레드 세이프 액세스를 생성하므로atomic변수는 스레드 세이프(데이터 손상 없이 여러 스레드에서 액세스 가능)

알았다.

copy개체가 변형 가능한 경우 필요합니다.현재 개체의 값이 필요하고 개체의 다른 소유자가 변경한 내용을 반영하지 않으려면 이 옵션을 사용합니다.복사본을 보관하고 있으므로 개체를 완료한 후 개체를 해제해야 합니다.

할당

Assign와는 다소 반대입니다.copy를 부때를터의 때.assign속성은 실제 데이터에 대한 참조를 반환합니다.으로 이 유형 int, 때 합니다.

유지하다

retain속성이 힙에 할당된 참조 카운트 개체에 대한 포인터인 경우 필요합니다.할당은 다음과 같이 표시되어야 합니다.

NSObject* obj = [[NSObject alloc] init]; // ref counted var

에 의해 .@synthesize개체가 복사될 때 참조 카운트를 개체에 추가하여 원본 복사본이 범위를 벗어나더라도 기본 개체가 자동으로 삭제되지 않도록 합니다.

작업을 마치면 개체를 해제해야 합니다. @property 용하여를 합니다.retain자동 해제 풀에서 참조 카운트와 메모리 점유율이 증가합니다.

강한.

strong 카운팅의 속성을 한 것입니다." - C는 (ARC)입니다.비 ARC 코드에서는 유지의 동의어일 뿐입니다.

은 이은배에좋웹입다니트사이은것우에 대해 입니다.strong그리고.weakiOS 5용. http://www.raywenderlich.com/5677/beginning-arc-in-ios-5-part-1

약한

weak는 와유다사 니합다니.strong참조 카운트를 1만큼 늘리지 않는다는 점만 제외하면 됩니다.이 개체는 해당 개체의 소유자가 되지 않고 해당 개체에 대한 참조만 보유합니다.개체의 참조 수가 0으로 떨어지면 여기서 개체를 가리킬 수 있지만 메모리에서 할당이 해제됩니다.

위 링크에는 약한 것과 강한 것에 대한 좋은 정보가 모두 포함되어 있습니다.

nonatomic재산상의 수단@synthesized 방법은 스레드세이프로 생성되지 않을 입니다. 하지만 이것은 더 빠릅니다.atomic추가 수표가 없어졌기 때문에 재산.

strongARC와 함께 사용되며 기본적으로 개체의 보유 개수에 대해 걱정할 필요가 없습니다.ARC는 작업이 끝나면 자동으로 해제합니다. 워드사용 strong사용자가 개체를 소유하고 있음을 의미합니다.

weak소유권이란 사용자가 소유하지 않고 할당된 개체가 유지될 때까지 개체를 추적하는 것을 의미하며, 두 번째 개체가 해제되는 즉시 개체가 손실되는 값을 의미합니다.예를 들면. obj.a=objectB;이 사용되며 속성이 약합니다. 이 값은 개체 B가 메모리에 남아 있을 때까지만 유효합니다.

copy여기에 속성이 매우설명되어 있습니다.

strong,weak,retain,copy,assign상호 배타적이므로 하나의 개체에 사용할 수 없습니다."신고된 자산" 섹션을 읽습니다.

이것이 당신에게 조금이라도 도움이 되기를 바랍니다...

이 링크에 고장이 있습니다.

http://clang.llvm.org/docs/AutomaticReferenceCounting.html#ownership.spelling.property

할당은 __protained_Unretained 소유권을 의미합니다.

copy는 __strong 소유권뿐만 아니라 세터에서 copy 의미론의 일반적인 동작을 암시합니다.

retain은 __strong 소유권을 의미합니다.

strong은 __strong 소유권을 의미합니다.

unsecure_unretained는 __retained_unretained 소유권을 의미합니다.

weak는 __weak 소유권을 의미합니다.

좋답변! 더 자세히 은 한가더설명싶고하은것은히자세지것입니다.nonatomic/atomic사용자는 이 속성 - "원자성"이 속성의 내용이 아닌 속성의 참조에만 퍼진다는 것을 이해해야 합니다.예.atomic사용자가 포인터를 읽고 속성에 대한 포인터만 설정할 수 있는 원자성을 보장합니다.예:

@interface MyClass: NSObject
@property (atomic, strong) NSDictionary *dict;
...

이 경우에 대한 포인터가 확실합니다.dict다른 스레드에 의해 원자적 방식으로 읽거나 설정됩니다.하지만dict 자체)dict를 가리키면 여전히 스레드가 안전하지 않습니다. 즉, 사전에 대한 모든 읽기/추가 작업이 스레드가 안전하지 않습니다.

스레드 안전한 수집이 필요한 경우 아키텍처가 불량하거나(자주) 실제 요구사항이 매우 적습니다(희귀)."실제 요구 사항"인 경우에는 테스트를 거친 양호한 스레드 안전 수집 구성 요소를 찾거나 테스트를 거친 스레드 안전 수집 구성 요소를 직접 작성할 수 있도록 준비해야 합니다.후자의 경우 "잠금 해제", "대기 해제" 패러다임을 살펴봅니다.언뜻 보기에는 로켓 과학처럼 보이지만, "일반적인 잠금"과 비교하여 환상적인 성능을 달성하는 데 도움이 될 수 있습니다.

언급URL : https://stackoverflow.com/questions/9859719/objective-c-declared-property-attributes-nonatomic-copy-strong-weak