gpt4 book ai didi

iphone 为什么他使用 valueForKeyPath

转载 作者:行者123 更新时间:2023-12-03 20:50:03 26 4
gpt4 key购买 nike

我在互联网上找到了一些 Mapkit 代码,如下所示:

- (void)recenterMap {
NSArray *coordinates = [self.mapView valueForKeyPath:@"annotations.coordinate"];

CLLocationCoordinate2D maxCoord = {-90.0f, -180.0f};
CLLocationCoordinate2D minCoord = {90.0f, 180.0f};
for(NSValue *value in coordinates) {
CLLocationCoordinate2D coord = {0.0f, 0.0f};
[value getValue:&coord];
if(coord.longitude > maxCoord.longitude) {
maxCoord.longitude = coord.longitude;
}

--omitted the rest

我想知道为什么使用 valueForKeypath 来获取坐标数据,而不仅仅是

[self.mapView.annotations]

跟速度有关系吗?

最佳答案

他使用 valueForKeyPath: 构造返回所有注释的所有坐标的数组。

假设self.mapView是一个MKMapView,那么它有一个annotations属性,该属性返回符合的对象数组MKAnnotation 协议(protocol)。这意味着该数组中的每个对象都应该实现坐标属性。通过发出对 [self.mapView valueForKeyPath:@"annotations.coordinate"] 的调用,他可以立即获取所有坐标的数组,而无需迭代数组中的每个单独的注释项。

如果不在这里使用 KVC 构造,他就必须做类似的事情:

NSMutableArray *coordinates = [NSMutableArray array];
for (id<MKAnnotation> annotation in self.mapView.annotations)
[coordinates addObject:annotation.coordinate];

总而言之,它只是让代码变得更简单、更容易阅读。

关于iphone 为什么他使用 valueForKeyPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1351637/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com