Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为目标C中的变量分配结构_Objective C - Fatal编程技术网

Objective c 为目标C中的变量分配结构

Objective c 为目标C中的变量分配结构,objective-c,Objective C,我不熟悉目标C,所以这可能是一个非常愚蠢的问题。我在读iOS编程书时发现了以下代码片段: - (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation { CLLocationCoordinate2D loc = [userLocation coordinate]; // returns CLLocationCoordinate2D ... } 我还在学习目标C

我不熟悉目标C,所以这可能是一个非常愚蠢的问题。我在读iOS编程书时发现了以下代码片段:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
    CLLocationCoordinate2D loc = [userLocation coordinate]; // returns CLLocationCoordinate2D
    ...
}
我还在学习目标C,但是
loc
不应该是指针吗?据我所知,您只能直接分配简单类型,如int和float。此处
CLLocationCoordinate2D
是一个结构。但这不起作用:

CLLocationCoordinate2D *loc = [userLocation coordinate]; 
// this throws error message
// Initializing 'CLLocationCoordinate2D *' with an expression of incompatible type 'CLLocationCoordinate2D'

那么这里发生了什么,我怎样才能了解更多关于指针的知识呢。谢谢

结构不是指针


它们只是简单的C型数据结构,如int、float等。

结构不是指针


它们只是简单的C型数据结构,如int、float等。

这取决于
[用户位置坐标]
的返回类型。如果它返回一个结构,那么您必须将该结构存储在某个地方。在这种情况下,您将把它存储在堆栈上,一旦超出范围,它将被删除


如果它返回一个指针,那么该指针将指向存储结构的位置。请记住,结构不是对象,它们只是一个可以存储多个分组值的记录。

这取决于
[userLocation coordinate]
的返回类型。如果它返回一个结构,那么您必须将该结构存储在某个地方。在这种情况下,您将把它存储在堆栈上,一旦超出范围,它将被删除


如果它返回一个指针,那么该指针将指向存储结构的位置。请记住,结构不是对象,它们只是一个可以存储多个分组值的记录。

您可以分配一个scruct。Objective-C最终仍然是C

虽然内存中的对象在内部与结构没有太大区别,但不能直接指定对象,只能指定对对象的引用


因此,您需要知道[userLocation coordinate]真正返回的是什么。它可以是一个结构或指向结构或类似id的指针。因此,接收返回值的本地变量必须是同一类型

您可以指定一个scruct。Objective-C最终仍然是C

虽然内存中的对象在内部与结构没有太大区别,但不能直接指定对象,只能指定对对象的引用


因此,您需要知道[userLocation coordinate]真正返回的是什么。它可以是一个结构或指向结构或类似id的指针。因此,接收返回值的本地变量必须是同一类型

右-它返回一个结构,而不是指向结构的指针:@property(readonly,NS_NONATOMIC_IPHONEONLY)CLLocationCoordinate2D coordinateRight-它返回一个结构,而不是指向结构的指针:@property(readonly,NS_NONATOMIC_IPHONEONLY)CLLocationCoordinate2D CoordinateThat你看,我需要更好地学习C。好的,从一开始我会说不。当作为两种语言的新手使用Obj-C时,太熟悉C可能会让人困惑。另一方面,每当你发现奇怪的语法时,答案就在C层谢谢,看来我需要更好地学习C。从一开始我会说不。当作为两种语言的新手与Obj-C一起工作时,太了解C可能会让人困惑。另一方面,每当你发现奇怪的语法时,答案就在C层