2010-04-25 41 views
5

Tôi muốn sử dụng giá trị tham chiếu của đối tượng làm khóa trong từ điển, trái với bản sao giá trị của đối tượng. Vì vậy, về cơ bản, tôi muốn lưu trữ một đối tượng liên kết với một cá thể cụ thể của một đối tượng khác trong từ điển và truy xuất giá trị đó sau này.Giá trị con trỏ đối tượng làm khóa trong từ điển

Điều này có khả thi không? Nó hoàn toàn chống lại ý tưởng của NSDictionary? Tôi có thể nói rằng tôi có thể tiếp cận điều này một cách sai lầm vì từ điển muốn tôi thực hiện NSCopying trên chính đối tượng, điều này thực sự không có ý nghĩa về những gì tôi đang làm. Tôi có thể thấy rằng những gì tôi thực sự nên làm là gói giá trị con trỏ, nhưng điều đó có vẻ hơi điên rồ.

Tư vấn sẽ được đánh giá cao.

Trả lời

2

NSMutableDictionary đã được thiết kế để chỉ đối phó với các cá thể đối tượng Objective-C. Ví dụ: khi bạn gọi tới số setObject:forKey:, hãy gọi copyWithZone: trên khóa và retain trên giá trị.

Nếu bạn muốn có cấu trúc từ điển và để có thể xử lý khóa và giá trị tùy ý, thì bạn có thể đi với CFMutableDictionary. Bạn có thể mô tả chính xác những gì được thực hiện với khóa và giá trị; nó đủ linh hoạt để đối phó với con trỏ tùy ý hoặc sự kiện char * chuỗi.

11

Tôi nghĩ bạn có thể sử dụng [NSValue valueWithPointer:object].

+0

đó đã làm việc khá tốt, cảm ơn! –

0

này đã làm các trick cho tôi

aDictionary[@((intptr_t)object)] = ...; 
Các vấn đề liên quan