Trả lời

8

Không theo llvm document on ARC

tự động đếm tham khảo thực hiện quản lý bộ nhớ tự động cho các đối tượng Objective-C và khối, giải phóng các lập trình viên từ các nhu cầu một cách rõ ràng chèn giữ và phát hành. Nó không cung cấp một bộ thu chu kỳ; người dùng phải quản lý rõ ràng suốt đời thay thế.

Một con trỏ đối tượng retainable (hoặc con trỏ retainable) là một giá trị của một loại con trỏ đối tượng retainable (loại retainable). Có ba loại của các loại con trỏ đối tượng retainable:

  • khối con trỏ (hình thành bằng cách áp dụng các dấu mũ (^) declarator sigil cho một loại chức năng)
  • con trỏ đối tượng Objective-C (id, Class, NSFoo *, vv)
  • typedefs được đánh dấu bằng __attribute __ ((NSObject))

loại con trỏ khác, chẳng hạn như int * và CFStringRef, không phụ thuộc vào ngữ nghĩa ARC và hạn chế.

3

ARC trực tiếp phát hành chỉ đối tượng ObjC (không char*, void*, int* ...). Tuy nhiên ARC vẫn gọi phương thức dealloc của các đối tượng. Vì vậy, nếu bạn có một đối tượng ObjC mà malloc của một số bộ nhớ và điểm char * tại nó, và phương pháp dealloc gọi miễn phí mà bộ nhớ vẫn sẽ được xử lý đúng cách.

Tương tự đối với các đối tượng Nền tảng cốt lõi, bạn vẫn cần phải CFRelease chúng. Ngay cả các loại CF cầu nối miễn phí cũng cần có các cuộc gọi thủ công đến CFRelease.