iOS 앱 개발을 위해 ARC 사용 속도가 빨라지고 있습니다. 간혹 일반 old C-Structs의 일반 C 배열이 작업을 완료하는 데 필요한 전부입니다. ARC 이전에는 dealloc
메소드에 free()
을 추가하기 만했습니다. ARC가 있으면 dealloc
에 대한 필요성이 더 이상 없습니다. 내 c-array (s)를 자유롭게 처리하도록 컴파일러에 알리기 위해 추가 할 수있는 ARC 지시문이 있습니까?자동 참조 횟수 (ARC). ARC가 일반 C 배열을 자유롭게 처리 할 수 있습니까?
당 톰의 대답은 여기의 dealloc 방법
// EIVertex
struct EIVertex {
GLKVector3 p;
GLKVector3 n;
GLKVector3 barycentric;
GLKVector2 st;
};
typedef struct EIVertex EIVertex;
// ivar declaration
EIVertex *_vertices;
// malloc an array of EIVertex
_vertices = (EIVertex *)malloc([_triangles count] * sizeof(EIVertex));
// Note lack of [super dealloc]
- (void)dealloc{
// ARC will not handle mem. management for plain ole c arrays.
free(_vertices);
}
'EIVertex'는 Objective-C 클래스입니까? Objective-C 클래스에서는'sizeof'를 사용하지 말아야합니다. 왜냐하면 클래스의 크기가 런타임에 바뀔 수 있기 때문입니다. 어쩌면 포인터 배열을 대신 사용할 수 있습니다. – newacct
@newacct, EIVertex는 일반 OLE 구조체입니다. 코드 스 니펫을 업데이트하여보다 명확하게 만들었습니다. 혼란을 드려 죄송합니다. – dugla