7

Tôi đang nhầm lẫn với tài liệu của Apple.sự khác biệt giữa ARC và MRC

Trong 3 cách chúng ta quản lý bộ nhớ, đó là:

  1. tự động đếm referance.
  2. đếm tham chiếu thủ công.
  3. thu gom rác.

Nghi ngờ của tôi là sự khác biệt giữa tính tham chiếu tự động và tính tham chiếu thủ công.

Ai đó có thể giải thích cho tôi không?

+0

bản sao có thể có của [Cơ chế tính tham chiếu tự động mới hoạt động như thế nào?] (Http://stackoverflow.com/questions/6385212/how-does-the-new-automatic-reference-counting-mechanism-work) –

Trả lời

14

Trong ARC bạn không phải giải phóng/tự động giải phóng bộ nhớ do bạn phân bổ, như trong trường hợp hướng dẫn sử dụng, bạn phải lo việc này. ví dụ: trường hợp thủ công

trường hợp
-(void)someMethod 
{ 
    NSMutableArray *arr = [[NSMutableArray alloc] init]; 
    //use array 
    [arr release]; //when array is in no use 
} 

ARC

-(void)someMethod 
{ 
    NSMutableArray *arr = [[NSMutableArray alloc] init]; 
    //use array 
} 
+0

Ok.Cảm ơn U. Có sự khác biệt nào giữa chúng không? – user1157838

+0

@ user1157838: có, hãy lưu ý trường hợp ARC không có [arr release] ;. Cũng lưu ý rằng trên bộ sưu tập rác iOS không có sẵn. – Bogatyr

+0

Có bất kỳ cài đặt nào để sử dụng ARC không? – user1157838

2

Trong ARC hệ điều hành chăm sóc quản lý bộ nhớ, do đó bạn không phải lo lắng về việc phát hành các đối tượng. Nó khá gọn gàng cho người mới bắt đầu. Trong khi tính theo cách thủ công, bạn sẽ phải theo dõi việc giải phóng bộ nhớ và nếu bạn không làm đúng, bạn sẽ bị treo ứng dụng của mình. ARC và MRC có sẵn trong ios, nơi bộ sưu tập rác được giới hạn trong MAC-OSX hy vọng điều này sẽ giúp. Inder đã đưa ra một ví dụ điển hình.

+0

Trong mọi phiên bản ARC có hỗ trợ hay không? – user1157838

+0

arc có sẵn trong sdk 4.2 –

+0

U có nghĩa là từ sdk 4.2 trở đi không cần phải giải phóng các đối tượng.Chúng tôi có thể tạo bất kỳ số lượng đối tượng nào. Tôi có đúng không? – user1157838

Các vấn đề liên quan