CLLocationCoordinate2D không phải là đối tượng để không thể thêm vào mảng và trả về. Vì họ là những cấu trúc có một vài lựa chọn,
malloc
một mảng cách thời trang cũ và sao chép dữ liệu struct vào mảng
malloc
một con trỏ cấu trúc mới, sao chép dữ liệu, sau đó lưu trữ các con trỏ trong một NSValue
- Tạo một lớp có các thuộc tính giống như các lĩnh vực của cấu trúc, và thêm rằng đến một mảng
Lựa chọn 1 và 2 yêu cầu quản lý bộ nhớ bổ sung đến khi giải phóng dữ liệu để tránh những. Tùy chọn 3 là tốt và nó chỉ như vậy xảy ra MapKit cung cấp các lớp CLLocation
. Dưới đây là ví dụ về 2 tọa độ.
-(NSArray*) addressLocations
{
CLLocationCoordinate2D coord1 = CLLocationCoordinate2DMake(1.00, 1.00);
CLLocationCoordinate2D coord2 = CLLocationCoordinate2DMake(2.00, 2.00);
CLLocation *loc1 = [[CLLocation alloc] initWithLatitude:coord1.latitude longitude:coord1.longitude];
CLLocation *loc2 = [[CLLocation alloc] initWithLatitude:coord2.latitude longitude:coord2.longitude];
NSArray *array = [NSArray arrayWithObjects:loc1, loc2, nil];
[loc1 release];
[loc2 release];
return array;
}
có thể trả lại mảng từ phương thức CLLocationCoordinate2D không ?? – sajaz
Điều George đang nói là bạn cần phải viết lại chữ ký phương thức của bạn để nó trả về một mảng thay vì một CLLocationCoordinate2D. Sau đó, trong việc thực hiện phương pháp, bạn nên điền vào một mảng với tọa độ và trả về các giá trị đó. Chỉ có 1 trở lại sẽ cháy, sau đó phương pháp đó được thực hiện. Bạn không thể thực hiện 2 hoặc nhiều lần trả về trong cùng một cuộc gọi phương thức. – Andrew
ya, cảm ơn rất nhiều bạn. Tôi đã nhận nó :) :) – sajaz