2009-10-06 24 views
11

Hoặc, điều gì ngược lại với + (void) khởi tạo?Mục tiêu C - Bạn xử lý các biến tĩnh toàn cục ở đâu?

Dưới đây là tình hình của tôi:

Tôi có một đơn vị lớp, mà - (id) initWithName: hàm lấy dữ liệu từ một NSDictionary toàn cầu, mà được tạo ra một cách lười biếng, được định nghĩa trong file Unit.m như:

static NSMutableDictionary * unitLibrary = nil;

Tôi nên gọi [phát hành đơn vịLibrary] ở đâu?

Trả lời

13

Bạn có thể gọi nó tại một vị trí mà bạn biết từ điển không cần thiết nữa. Nếu nó là cần thiết trong suốt toàn bộ vòng đời của ứng dụng, thì bạn không phải làm bất cứ điều gì vì tất cả các ký ức sẽ được hệ điều hành thu hồi khi ứng dụng chấm dứt.

+0

Đây là trên iphone, vì vậy không thể có bất kỳ rò rỉ bộ nhớ nào. Khi người dùng nhấn nút home và thoát khỏi ứng dụng, toàn bộ đống của tôi bị deallocated? – abtree

+1

Có, khi họ nhấn nhà, toàn bộ không gian địa chỉ của bạn được xử lý, bao gồm cả đống của bạn. –

+2

Không cần phải làm sạch mùa xuân ngay trước khi bạn phá hủy ngôi nhà. Chấm dứt ứng dụng được phát hành đủ và nhanh hơn. – PeyloW

3

Không có câu trả lời có mục đích chung. Bạn nên deallocate nó khi bạn chắc chắn nó sẽ không được sử dụng một lần nữa. Các ứng viên có thể có thể ở trong các ứng dụng WillTerminate thông báo đại biểu hoặc thông qua chức năng atexit().

+0

Không có điểm nào trong việc giải phóng các đối tượng khi ứng dụng chấm dứt - bộ nhớ sắp được giải phóng. – Chuck

+0

Vâng, điều này rất tệ - chỉ cần để hệ điều hành dọn dẹp. Không có vấn đề gì khi làm việc ở đây. Bạn đang trì hoãn việc thoát ứng dụng. – Ken

+1

Nó được cho là hữu ích, để giảm số lượng lộn xộn được tạo ra bởi các công cụ phát hiện rò rỉ. Nhưng có lẽ không đáng để nỗ lực. –

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