2011-10-12 25 views
5

Trong xcode 4.2 Tôi đã tìm thấy nó rất bực bội vì bạn không thể sử dụng:Làm thế nào để bạn phát hành bộ nhớ trong xcode 4.2?

-(void)dealloc { 
[label release]; //'release' is unavailable 
[super dealloc]; //'dealloc' is forbidden in automatic reference counting 
} 

Có một cách khác vì autorelease và khác deallocs không làm việc một trong hai.

+0

... bạn thì không. Trừ khi bạn có dự án của bạn bằng cách sử dụng quản lý bộ nhớ thủ công. – JoePasq

+0

vì vậy tôi sẽ không nhận được cảnh báo bộ nhớ ngay cả khi tôi không phát hành bộ nhớ? – iphonemaniac

+0

Tôi không thể nói ra khỏi đỉnh đầu. Kiểm tra các tài liệu trên đó, tôi không nghĩ rằng cảnh báo bộ nhớ đã biến mất, đặc biệt là với iPhone 3GS vẫn còn trên thị trường. – JoePasq

Trả lời

9

Xcode 4.2 giới thiệu "Đếm tham chiếu tự động" (aka ARC). Đây là một tính năng trình biên dịch cơ bản chèn giữ lại và phát hành các cuộc gọi cho bạn. Trong ARC, nếu bạn có một con trỏ tới một đối tượng, bạn sẽ giữ lại nó. Khi con trỏ của bạn nằm ngoài phạm vi, hoặc được gán lại để trỏ đến một đối tượng khác, đối tượng ban đầu sẽ được giải phóng. Nó thực sự tốt đẹp.

Vì vậy, trong ngắn hạn, bạn chỉ cần loại bỏ tất cả các cuộc gọi đến retain, release, và autorelease, và trình biên dịch sẽ làm điều đúng cho bạn.

+0

Thật tuyệt vời! – iphonemaniac

1

Đọc về tính năng tham chiếu tự động. Nếu bạn viết mã của bạn đúng cách, bạn không cần phải làm bất kỳ điều gì nữa.

Nếu bạn muốn sử dụng mã cũ mà không cần chuyển đổi, hãy tắt ARC. đặt -fno-objc-arc trong cờ trình biên dịch cho bất kỳ mô-đun nguồn nào bạn không muốn sử dụng ARC.

joe

+0

Làm thế nào để bạn viết mã chính xác – iphonemaniac

+0

Có vấn đề gì nếu tôi không phát hành bộ nhớ? – iphonemaniac

+0

Không, nó sẽ không – iphonemaniac

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