【发布时间】:2016-12-30 07:00:26
【问题描述】:
我想知道为什么 Objective-c (ARC) 不允许我使用指向结构的指针(在本例中为 NSPoint)
我的代码在没有代码的情况下也可以工作,我只是想问一下为什么它不允许这样做,因为我没有在 Google 上找到它的原因。
我目前的猜测是因为结构不能包含对象,但我想再次检查一下;并想知道结构本身的保存位置。谢谢!
【问题讨论】:
-
您可以使用指向结构的指针。你能提供一些代码吗?
-
NSPoint point = NSMakePoint(1.23, 4.56); NSPoint * pointPointer = &point;工作正常。你想用指针做什么? -
我的意思是,
NSPoint *point = NSMakePoint(1.5,1.6)不起作用,但NSPoint point = NSMakePoint(1.5,1.6)起作用,因为 NSMakePoint 返回一个NSPoint,而不是NSPoint *,我想知道为什么会这样;如果这仅适用于结构(我不会对类做同样的事情) -
Objective-C 非常乐意使用指向结构的指针。您给出的示例(
NSPoint *point = NSMakePoint(1.5,1.6)是无效代码;NSMakePoint()返回一个结构,而不是指向结构的指针,因此您不能将其分配给指针。如果您想创建一个函数(或方法,或块,或属性,或...)返回指向结构(或联合,或枚举,或int,或float,或char,...)的指针,Objective-C 不会阻止你。跨度> -
因为接口类型(即 NSString 是什么)不能静态分配。
标签: objective-c pointers struct