Tôi không thể tìm thấy ví dụ hoạt động của phương thức [NSDictionary getObjects:andKeys:]
. Chỉ có example Tôi có thể tìm thấy, không biên dịch. Tôi đã cung cấp các lỗi/cảnh báo ở đây trong trường hợp ai đó đang tìm kiếm chúng.Ví dụ về [NSDictionary getObjects: andKeys:]
Lý do tôi bị nhầm lẫn là vì hầu hết các phương pháp trên NSDictionary đều trả về một NSArray
. Tuy nhiên, trong documentation nó nói rằng các biến ngoài của phương thức này được trả về dưới dạng mảng C.
Dưới đây là các thông báo lỗi/cảnh báo bạn có thể nhận được nếu bạn làm theo các ví dụ liên kết:
NSDictionary *myDictionary = ...;
id objects[]; // Error: Array size missing in 'objects'
id keys[]; // Error: Array size missing in 'keys'
[myDictionary getObjects:&objects andKeys:&keys];
for (int i = 0; i < count; i++) {
id obj = objects[i];
id key = keys[i];
}
.
NSDictionary *myDictionary = ...;
NSInteger count = [myDictionary count];
id objects[count];
id keys[count];
[myDictionary getObjects:&objects andKeys:&keys]; // Warning: Passing argument 1 of 'getObjects:andKeys:' from incompatible pointer type.
for (int i = 0; i < count; i++) {
id obj = objects[i];
id key = keys[i];
}
Tôi sẽ cung cấp giải pháp làm việc như một câu trả lời cho câu hỏi này.
làm tôi cần phải giải phóng obj và key? – Cesar
Không phát hành bất cứ điều gì trong ví dụ mã ở trên. –
Chỉ trong trường hợp anyones tự hỏi tại sao bạn không cần phải phát hành bất cứ điều gì (đây là một điều mà giết chết tôi trong phát triển ban đầu) đó là bởi vì không có gì được alloc'd. Không có bộ nhớ được cấp phát = không cần bộ nhớ nào được giải phóng. Rõ ràng nhưng nếu tôi thấy điều này một vài tháng trước, tôi sẽ không có ý tưởng tại sao bạn sẽ không sử dụng phát hành :) – Elmo