변경할 수있는 인터페이스의 속성을 선언 할 때 항상 (비 원자 복사) 만들어야합니까? 또한 언제 retain 대신 assign을 사용합니까?Objective-C 가변 속성, 복사 유지 등?
답변
스레드 안전보다 성능이 더 중요 할 때 nonatomic
을 사용하십시오. 원자 속성은 스레드로부터 안전하지만 느립니다. 기본 동작은 atomic
입니다.
copy
을 사용하면 새 값이 속성에 설정 될 때마다 복사본을 만들 수 있습니다. 대부분의 경우 copy
은 실제로 개체의 복사본을 만들지 않으므로 성능에 미치는 영향은 없지만 누군가가 변경 가능한 복사본을 제공하면 버그를 해결할 수 있습니다 (예 : NSString
속성이 있고 다른 사람이 NSMutableString
을 할당 함).
적 retain
또는 ARC가 꺼져있을 때에 만 필요한 이들과 같은 strong
사용하지 마십시오, 당신은 항상 ARC가 켜져 있어야합니다. strong
및 retain
가 동일하고, 이것은 ARC가 활성화 된 상태. 그냥 켜 ARC의 기본 동작입니다 역 호환 코드를 제외하고이 코드를 무시하고 무시하십시오.
예를 들어 retain
또는를 사용하는 대리인 속성은 메모리 누수가 발생합니다. 이 경우에는 weak
또는 assign
을 사용해야합니다. 일반적으로 weak
을 사용해야합니다. assign
에는 드문 케이스 버그가있을 수 있습니다.
더 이상 보관하지 않는 이유는 무엇입니까? –
@Savagewood 미안해. 나는 반품을 명중하고 그것을 써서 반쯤 대답했다. Retain은 현대 프로젝트의 기본 동작이며 이전 프로젝트에서만 필요합니다. 어떤 사람들은 여전히 그것을 습관에서 사용하지만 요즘은 그것을 사용하지 않습니다. ARC를 켜십시오. –
참으로 대리인을 수행하거나 다른 사람이 소유 한 객체를 가리킬 때 주를 사용하거나 할당합니까? –
- 1. UILocalNotification - 가변 복사
- 2. 가변 개체에 iOS "복사"키워드
- 3. 가변 변수 공유 유지 (Android)
- 4. SAS 트랜스 유지 플래그 등
- 5. PHP 가변 객체 속성
- 6. 가변 배열 입력 속성
- 7. 세타 & 복사 유지?
- 8. 가변 범위에서 오프셋 셀 복사
- 9. NumberFormatter - ObjectiveC
- 10. 컨트롤의 속성 유지
- 11. VHDL 속성 유지
- 12. ZipFile의 파일 속성 유지
- 13. 모델 속성 유지
- 14. NSString 문자열 복사 유지 질문
- 15. 바인딩 속성 내용, 배경 등
- 16. 가변 높이 요소에 완벽한 원형 모서리 유지
- 17. 가변 길이 목록 편집시 ViewData 유지
- 18. iOS 코코아 가변 변수 블록 유지
- 19. 복사 개체 속성/
- 20. WPF에서 XAML 속성 복사
- 21. 클립 보드에 속성 복사
- 22. cURL 사용 - 쿠키 및 세션 유지 등
- 23. Visual Studio 재구성 간의 세션 유지 등
- 24. TCPDF - 내용이있는 h1, h2 등 태그 유지
- 25. 전체 워크 시트 복사 - 동일한 포맷 유지
- 26. 가변
- 27. PHP 복사/fopen 등 시간 초과
- 28. 속성 속성 - 강점 대 복사 예?
- 29. 속성 이름을 매핑하여 속성 값 복사
- 30. PowerShell : 정규식 값을 기반으로 파일 복사/이동, 폴더 구조 유지 등
iOS4 이전 버전을 개발 중이고 자동 참조 횟수를 사용할 수없는 경우. 그것은 귀하의 상황에 해당합니까? 할당은 기본 유형 (BOOL, NSInteger) 또는 소유하지 않은 객체 포인터에 대한 것입니다. Retain은 메모리에 오브젝트 w 포인터를 저장하는 것입니다. 복사는 별도의 사본을 작성하므로 원본을 그대로 둘 수 있습니다. 오래된 코드를 사용하지 않는다면 ARC와보다 현대적인 예제를 살펴 봐야합니다. 궁금하신 분은 http://stackoverflow.com/questions/2255861/property-and-retain-assign-copy-nonatomic-in-objective-c?rq=1 – mc01