Objective-C의 강점과 약점의 차이점 처음 사용하므로 첫 번째 질문은 다음과

저는 Obj-C를 처음 사용하므로 첫 번째 질문은 다음과 같습니다.

의 차이점은 무엇입니까 strongweak@property객체에 대한 포인터의 선언은?

또한 무엇을 nonatomic의미합니까?



답변

강력한 참조 (대부분의 경우에 사용됨)는이 속성 / 변수를 참조하는 개체를 “소유”하고자 함을 의미합니다. 컴파일러는이 속성에 할당 한 객체가 강력한 참조로 가리키고있는 한 파괴되지 않도록주의합니다. 속성을 한 번만 설정하면 nil객체가 손상됩니다 (하나 이상의 다른 객체가 객체를 강력하게 참조하지 않는 한).

대조적으로, 약한 참조로 객체의 수명을 제어하고 싶지 않다는 것을 나타냅니다. 약하게 참조하는 객체는 적어도 하나의 다른 객체가 그것에 대한 강한 참조를 가지고 있기 때문에 계속 존재합니다. 이것이 더 이상 적용되지 않으면 객체가 파괴되고 약한 속성이 자동으로 설정됩니다 nil. iOS에서 약한 참조의 가장 빈번한 사용 사례는 다음과 같습니다.

  1. 유지주기를 피하기 위해 종종 약하게 참조되는 위임 속성

  2. 뷰 컨트롤러의 메인 뷰의 서브 뷰 / 컨트롤은 해당 뷰가 이미 메인 뷰에 의해 강력하게 유지되어 있기 때문입니다.

atomic 대 nonatomic은 컴파일러가 속성에 대해 합성하는 getter 및 setter 메서드의 스레드 안전성을 나타냅니다. atomic (기본값)은 컴파일러에 접근 자 메소드를 스레드로부터 안전하게 설정하고 (ivar에 액세스하기 전에 잠금을 추가하여) 비원 자적으로 반대입니다. 비원 자의 장점은 약간 더 높은 성능입니다. iOS에서 Apple은 거의 모든 속성에 비원자를 사용하므로 일반적인 조언은 동일한 작업을 수행하는 것입니다.


답변

풍선의 관점에서 강하고 약한 참조에 대해 생각하는 것이 도움이 될 수 있습니다.

풍선에 부착 된 끈을 한 명 이상 잡고 있으면 풍선이 날아 가지 않습니다. 줄을 들고있는 사람의 수는 유지 횟수입니다. 아무도 끈을 잡고 있지 않으면 ballon이 날아갑니다 (dealloc). 많은 사람들이 같은 풍선에 줄을 가질 수 있습니다. 강한 참조와 약한 참조를 모두 사용하여 참조 된 객체에서 속성을 가져 오거나 설정할 수 있습니다.

강한 참조는 풍선에 끈을 붙잡고있는 것과 같습니다. 풍선에 부착 된 끈을 잡고있는 한 날아 가지 않습니다.

약한 참조는 풍선을 보는 것과 같습니다. 볼 수 있고, 속성에 액세스하고, 메서드를 호출하지만 해당 풍선에 문자열이 없습니다. 줄을 잡고있는 모든 사람이 갈 수 있으면 풍선이 날아가서 더 이상 액세스 할 수 없습니다.


답변

strong : 들어오는 값을 할당합니다. 들어오는 값을 유지하고 인스턴스 변수의 기존 값을 해제합니다

weak : 들어오는 값을 유지하지 않고 할당합니다.

기본적인 차이점은 새로운 변수를 유지하는 것입니다. 일반적으로 유지하려고하지만 유지하지 않으려는 경우가 있습니다. 그렇지 않으면 유지 주기가되어 메모리 객체를 해제 할 수 없습니다. 예 : obj1은 obj2를 유지하고 obj2는 obj1을 유지합니다. 이러한 상황을 해결하려면 약한 참조를 사용하십시오.


답변

더미 답변 :-

나는 위의 답변에 설명이 있다고 생각하므로 어디에서 사용해야 STRONG하고 어디에서 사용 해야하는지 말할 것입니다 WEAK.

의 사용 Weak: –
1. 대표 2. 콘센트 3. 서브 뷰 4. 제어 등

사용 Strong:-에
포함되지 않은 모든 곳에 남아 있습니다 WEAK.


답변

강력한약한 주변에 이러한 키워드가 공전 객체 소유 목표 – C에서

객체 소유권이란 무엇입니까?

포인터 변수는 그들이 가리키는 객체의 소유권을 의미합니다.

  • 메소드 (또는 함수)에 객체를 가리키는 로컬 변수가 있으면 해당 변수는 가리키는 객체를 소유한다고합니다.
  • 객체에 다른 객체를 가리키는 인스턴스 변수가있는 경우 포인터가있는 객체는 가리키는 객체를 소유한다고합니다.

포인터 변수가 객체를 가리킬 때마다 해당 객체에 소유자가 있으며 계속 유지됩니다. 이것은 강력한 참조 로 알려져 있습니다.

변수는 선택적으로 객체의 소유권을 가질 수 없습니다. 객체의 소유권을 가지지 않는 변수를 약한 참조라고합니다.

자세한 설명을 보려면 여기에서 @property 및 속성을 이해하십시오.


답변

여기에서 Apple Documentation 은 다양한 예제를 사용하여 약한 속성과 강한 속성의 차이점을 설명했습니다.

https://developer.apple.com/library/ios/documentation/cocoa/conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html#//apple_ref/doc/uid/TP40011210-CH5-SW3

여기,이 블로그에서 저자는 모든 장소를 같은 장소에 모았습니다. 속성 특성을 비교하는 데 도움이됩니다.

http://rdcworld-iphone.blogspot.in/2012/12/variable-property-attributes-or.html


답변

strong 이 기본값입니다. 개체에 대한 강력한 포인터가있는 한 개체는 “생존”상태로 유지됩니다.

weak 는 참조 된 개체를 유지하지 않는 참조를 지정합니다. 객체에 대한 강한 참조가없는 경우 약한 참조는 nil로 설정됩니다.