Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.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
Ios 非目标C指针类型的隐式转换';int*';至';伯德*';不允许使用ARC_Ios_Objective C_Xcode_Pointers_Object - Fatal编程技术网

Ios 非目标C指针类型的隐式转换';int*';至';伯德*';不允许使用ARC

Ios 非目标C指针类型的隐式转换';int*';至';伯德*';不允许使用ARC,ios,objective-c,xcode,pointers,object,Ios,Objective C,Xcode,Pointers,Object,Bird、GameWorld和GameSecene是我项目中的三个自定义类 我在类游戏世界中有一个Bird类型的对象(作为属性)。我在GameSecene类中有Bird和Gameworld类型的对象。现在在游戏场景类中,当我执行以下操作时: _bird = [_gameWorld bird]; 将发出错误警报: 将非目标C指针类型“int*”隐式转换为“Bird” *“不允许使用ARC 为什么会这样 编辑: 游戏场景 #import <SpriteKit/SpriteKit.h>

Bird、GameWorld和GameSecene是我项目中的三个自定义类

我在类游戏世界中有一个Bird类型的对象(作为属性)。我在GameSecene类中有Bird和Gameworld类型的对象。现在在游戏场景类中,当我执行以下操作时:

_bird = [_gameWorld bird];
将发出错误警报:

将非目标C指针类型“int*”隐式转换为“Bird” *“不允许使用ARC

为什么会这样

编辑:

游戏场景

#import <SpriteKit/SpriteKit.h>
#import "Bird.h"
#import "ScrollHandler.h"
#import "Pipe.h"
#import "GameWorld.h"

@interface GameScene : SKScene <SKPhysicsContactDelegate>{

    int _midPointY;
    float _gameHeight;
    NSString *_gameName;
    NSString *_getReady;
    Bird *_myBird;   

    NSTimeInterval _dt;
    float bottomScrollerHeight;

    GameWorld *_myWorld;   

}

@property (nonatomic) SKSpriteNode* backgroundImageNode;
@property (nonatomic) SKSpriteNode* greenBird;

@property (nonatomic) NSTimeInterval lastSpawnTimeInterval;
@property (nonatomic) NSTimeInterval lastUpdateTimeInterval;


@end
注意:我刚刚发现,当我删除导入“Gameworld.h”时
从“Bird.h”中,错误消失了,它正在工作。导入是在那里意外进行的,不需要。但是我不知道为什么它会导致错误。

正如你最后提到的,这是唯一的问题

发生了什么事?

当您将
Gameworld
导入到
Bird
接口文件时,您的
Gameworld
本身有一个名为
Bird
的变量,类型为
Bird
。然后,在接下来的几行中定义了
Bird
类。在此之前,编译器不知道
Bird
对象是什么,默认情况下,它假定它是
int

如果您想在
Bird
类中声明
Gameworld
对象,那么您只需要使用前向声明,而不是将其导入接口

@class Gameworld;

这告诉编译器一个名为
Gameworld
类确实存在,正如您在最后提到的,这是唯一的问题

发生了什么事?

当您将
Gameworld
导入到
Bird
接口文件时,您的
Gameworld
本身有一个名为
Bird
的变量,类型为
Bird
。然后,在接下来的几行中定义了
Bird
类。在此之前,编译器不知道
Bird
对象是什么,默认情况下,它假定它是
int

如果您想在
Bird
类中声明
Gameworld
对象,那么您只需要使用前向声明,而不是将其导入接口

@class Gameworld;

这告诉编译器一个名为
Gameworld
类确实存在,正如您在最后提到的,这是唯一的问题

发生了什么事?

当您将
Gameworld
导入到
Bird
接口文件时,您的
Gameworld
本身有一个名为
Bird
的变量,类型为
Bird
。然后,在接下来的几行中定义了
Bird
类。在此之前,编译器不知道
Bird
对象是什么,默认情况下,它假定它是
int

如果您想在
Bird
类中声明
Gameworld
对象,那么您只需要使用前向声明,而不是将其导入接口

@class Gameworld;

这告诉编译器一个名为
Gameworld
类确实存在,正如您在最后提到的,这是唯一的问题

发生了什么事?

当您将
Gameworld
导入到
Bird
接口文件时,您的
Gameworld
本身有一个名为
Bird
的变量,类型为
Bird
。然后,在接下来的几行中定义了
Bird
类。在此之前,编译器不知道
Bird
对象是什么,默认情况下,它假定它是
int

如果您想在
Bird
类中声明
Gameworld
对象,那么您只需要使用前向声明,而不是将其导入接口

@class Gameworld;

这告诉编译器,确实存在,名称为
Gameworld

导入语句必须是线性的,但有一个循环<代码>游戏场景.m->
游戏场景.h
->
鸟.h
->
游戏世界.h
->
鸟.h


因此,当
GameWorld.h
#导入“Bird.h”
时,编译器看到
Bird.h
已经导入,没有导入。问题是,
@interface Bird
尚未定义,因此,
GameWorld
没有为
Bird

提供正确的接口,导入语句必须是线性的,但有一个循环<代码>游戏场景.m->
游戏场景.h
->
鸟.h
->
游戏世界.h
->
鸟.h


因此,当
GameWorld.h
#导入“Bird.h”
时,编译器看到
Bird.h
已经导入,没有导入。问题是,
@interface Bird
尚未定义,因此,
GameWorld
没有为
Bird

提供正确的接口,导入语句必须是线性的,但有一个循环<代码>游戏场景.m->
游戏场景.h
->
鸟.h
->
游戏世界.h
->
鸟.h


因此,当
GameWorld.h
#导入“Bird.h”
时,编译器看到
Bird.h
已经导入,没有导入。问题是,
@interface Bird
尚未定义,因此,
GameWorld
没有为
Bird

提供正确的接口,导入语句必须是线性的,但有一个循环<代码>游戏场景.m->
游戏场景.h
->
鸟.h
->
游戏世界.h
->
鸟.h

因此,当
GameWorld.h
导入“Bird.h”
时,编译器看到
Bird.h
是al