Objective-C中MKCoordinateSpan相关语法解析疑问
关于MKCoordinateSpan语法的解析
嘿,刚接触Objective-C的话,这段代码确实容易让人产生误解,我来帮你梳理清楚:
首先要纠正一个关键误解:MKCoordinateSpan不是类,它是CoreLocation框架中定义的一个C语言风格的结构体,它的定义大致如下:
typedef struct { CLLocationDegrees latitudeDelta; CLLocationDegrees longitudeDelta; } MKCoordinateSpan;
接下来看你疑惑的(MKCoordinateSpan){ [self CLLocationDegrees:json[@"latitudeDelta"]], [self CLLocationDegrees:json[@"longitudeDelta"]] }语法:
这是Objective-C继承自C语言的结构体聚合初始化语法,它的作用就是直接创建并初始化一个MKCoordinateSpan类型的结构体实例——把括号内的两个值,按顺序分别赋值给结构体的latitudeDelta和longitudeDelta成员。
再简单拆解这段类方法的逻辑:
- 这是一个类方法(开头的
+标识),功能是将JSON数据转换为MKCoordinateSpan结构体 json = [self NSDictionary:json];这行是将输入的JSON对象转换为NSDictionary类型,方便后续通过键值对取值- 最后通过结构体初始化语法,把从字典中取出的
latitudeDelta和longitudeDelta(先转换为CLLocationDegrees类型)赋值给结构体的对应成员,返回这个初始化好的结构体实例
所以你的第二个猜测是对的:这个语法就是用来创建包含latitudeDelta和longitudeDelta两个值的MKCoordinateSpan类型(结构体)实例,而非类对象。
内容的提问来源于stack exchange,提问作者Hoai Nam Tran
相关产品推荐
相关产品推荐

