ARC는 file -fno-objc-arc를 표시하더라도 구조체 또는 유니언에서 Objective-C 개체를 금지합니다.
ARC는 file -fno-objc-arc를 표시했음에도 불구하고 구조체 또는 유니언에서 Objective-C 객체를 금지합니다.왜 그럴까요?
저는 만약 당신이 그것을 -fno-objc-arc로 표시한다면 당신은 이 제한을 받지 않을 것이라고 가정했습니다.
이 메시지가 표시되면 __unsafe_unretained를 시도해 보십시오.구조물의 객체가 고정되지 않은 경우에만 안전합니다.예:OpenFint를 ARC와 함께 사용하는 경우 ClassOFragDelegateStrings는 구조체에서 이 오류를 말합니다.
typedef struct OFBragDelegateStrings
{
NSString* prepopulatedText;
NSString* originalMessage;
} OFBragDelegateStrings;
로.
typedef struct OFBragDelegateStrings
{
__unsafe_unretained NSString* prepopulatedText;
__unsafe_unretained NSString* originalMessage;
} OFBragDelegateStrings;
구조체를 사용하는 대신 Objective-C 클래스를 만들어 데이터를 대신 관리할 수 있습니다.
이는 아크가 구조체나 유니언의 객체를 추적할 수 없기 때문입니다(그 점이 플레인 C 포인터이기 때문입니다).
문제의 파일/클래스를 다음으로 표시했음에도 불구하고-fno-objc-arc
아크에 의해 제어되는 개체를 매개 변수로 전달할 수 있으며, 이 경우 메모리 누수가 발생할 가능성이 높습니다.
이제 오류 없이 작동하는 것 같습니다. 아마 이 변경 이후일 것입니다.
즉, C 구조에서 Objective-C 개체에 대한 일반(강력) 포인터를 넣을 수 있습니다.ARC에 의해 관리됩니다. 예를 들어, 구조물이 파괴될 때 유지되지 않습니다.확인 대상:
$ clang --version Apple LLVM version 10.0.0 (clang-1000.11.45.2)
언급URL : https://stackoverflow.com/questions/8093099/arc-forbids-objective-c-objects-in-structs-or-unions-despite-marking-the-file-f
'programing' 카테고리의 다른 글
파이썬에서 float('inf')의 요점은 무엇입니까? (0) | 2023.08.08 |
---|---|
Oracle에서 구체화된 보기를 부분적으로 새로 고칠 수 있습니까? (0) | 2023.08.08 |
전체 기록 스택을 지우고 Android에서 새 작업 시작 (0) | 2023.07.29 |
Ajax를 통해 Javascript Object를 PHP로 전송 (0) | 2023.07.29 |
Thymeleafth:reactJS의 텍스트 사용 방법 (0) | 2023.07.29 |