2010-10-04 65 views
7

Tôi muốn thực hiện một cái gì đó giống như những gì đang được thực hiện trong bài đăng này: Constants in Objective-CTạo đối tượng từ điển hằng số

tuy nhiên, tôi muốn xây dựng một từ điển NSD.

nếu tôi làm điều gì đó như:

constants.h

extern NSArray *const mFooKeys; 
extern NSArray *const mFooObjects; 
extern NSDictionary *const mFooDictionary; 

constants.m

NSArray *const mFooKeys = [[NSArray alloc] initWithObjects: 
            @"Foo", @"Bar", @"Baz", nil]; 
NSArray *const mFooObjects = [[NSArray alloc] initWithObjects: 
            @"1", @"2", @"3", nil]; 
NSDictionary *const mFooDictionary = [[NSDictionary alloc] dictionaryWithObjects:mFooObjects 
                     forKeys:mFooKeys]; 

làm tôi phát hành trong dealloc và mọi thứ đều tốt, hoặc là có nhiều hơn để nó ? đây là một câu hỏi thận trọng hơn là một câu hỏi 'cái gì đó sai', nhưng tôi cảm thấy như tôi có thể thực sự mess này lên mà không nhận ra nó.

Trả lời

5

Để có số không đổi như NSDictionary dựa trên các loại dữ liệu cốt lõi khác, bạn cần phải bao gồm nó trong lớp sẽ sử dụng hằng số hoặc tạo Singleton class và lưu trữ NSDictionary ở đó. Chỉ có một số loại lớp sẽ không hoạt động trong quá trình triển khai mà bạn đang xem; các hằng số mã bạn đang tìm kiếm sẽ cần phải được sử dụng như một đối tượng để hoạt động chính xác, nhưng tôi nghĩ rằng loại thất bại mục đích. Tôi không rõ ràng là yếu tố quyết định cho những gì bạn có thể và không thể làm trong việc thực hiện hằng số đơn giản, nhưng tôi đã gặp vấn đề tương tự và mẫu thiết kế Singleton hoạt động hoàn hảo cho tôi. (Dù bằng cách nào, bạn nên dealloc một cách thích hợp ngay cả khi chúng sẽ tồn tại trong suốt vòng đời của ứng dụng.)

0

Bạn tuyên bố đây là hằng số, vì vậy chúng là các đối tượng đơn lẻ sẽ tồn tại trong suốt thời gian tồn tại của ứng dụng của bạn. Không cần phải phát hành, vì chúng cần thiết cho đến khi ứng dụng thoát.

Bạn không muốn phát hành trong dealloc, vì điều này sẽ phát hành mỗi khi một phiên bản của lớp có liên quan được deallocated.

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