【问题标题】:setDelegate:]: unrecognized selector sent to instance (device only)setDelegate:]:发送到实例的无法识别的选择器(仅限设备)
【发布时间】:2014-09-15 22:37:11
【问题描述】:

直到最近,当 Sprite Scene 在“return self;”后开始崩溃时,我的应用程序一直运行良好。它会在“以 NSException 类型的未捕获异常终止”之前显示错误“-[BEGameScene setDelegate:]: unrecognized selector sent to instance 0x10040de10'”,这个错误似乎只发生在设备上; ios模拟器运行良好。

奇怪的是,该错误似乎不在我的代码中。我拿了一个旧的,仍在工作的版本,直接从 finder 复制它,当我运行它时它也崩溃了。

会不会是 Xcode 6(我最近下载的)有问题?

提前致谢

编辑:

抱歉,这里是代码

#import "BEGameScene.h"
#import "AppDelegate.h"

#import <UIKit/UIKit.h>
#import <SpriteKit/SpriteKit.h>

@interface BEMainGameViewController : UIViewController <BEGameSceneDelegate>
@property (nonatomic, assign) id <BEGameSceneDelegate> delegate;

@end

#import "BEMainGameViewController.h"
#import "BEGameScene.h"

@interface BEMainGameViewController ()
@property (strong, nonatomic) IBOutlet UIPanGestureRecognizer *control;
@end

@implementation BEMainGameViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Configure the view.
    SKView *skView = (SKView *)self.view;
    skView.showsFPS = NO;
    skView.showsNodeCount = NO;

    // Create and configure the scene.
    BEGameScene *scene = [BEGameScene sceneWithSize:skView.bounds.size];
    scene.scaleMode = SKSceneScaleModeAspectFill;
    scene.delegate = self;

    // Present the scene.
    [skView presentScene:scene];

    [self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"Background 1.tiff"]]];

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)unwindFromGame {
    [self performSegueWithIdentifier:@"unwindFromGameScene" sender:self];
}



@end

#import <SpriteKit/SpriteKit.h>

@protocol BEGameSceneDelegate <NSObject>

-(void)unwindFromGame;

@end

@interface BEGameScene : SKScene <UIGestureRecognizerDelegate>
@property (weak, nonatomic) id <BEGameSceneDelegate> delegate;

@end

#import "BEMainGameViewController.h"
#import "BEGameScene.h"
#import "AppDelegate.h"

@implementation BEGameScene {
    NSArray *location;
    int x_flower;
    int x_Trap1;
    int x_Trap2;
    int randNum;
    int speed;
    int score;
    int life;
    BOOL rad;
    BOOL collide;
    NSInteger interval;
    SKSpriteNode *sprite_bee;
    SKSpriteNode *sprite_flower;
    SKSpriteNode *sprite_flyTrap;
    SKSpriteNode *sprite_flyTrap2;
    SKSpriteNode *sprite_rad;
    SKSpriteNode *sprite_radGlow;
    NSTimer *timer;
    SKLabelNode *youLoseLabel;
    SKLabelNode *instruction;
    NSString *scoreText;
    NSString * honey;

}

-(id)initWithSize:(CGSize)size {

    life = 1;

    if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        //self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];

        SKSpriteNode *bgImage = [SKSpriteNode spriteNodeWithImageNamed:@"BGImage"];
        bgImage.position = CGPointMake(self.size.width/2, self.size.height/2);
        [self addChild:bgImage];

        //Bee movement
        SKTexture *texture1 = [SKTexture textureWithImageNamed:@"Bee up.tiff"];
        SKTexture *texture2 = [SKTexture textureWithImageNamed:@"Bee down.tiff"];
        SKTexture *texture3 = [SKTexture textureWithImageNamed:@"Flower.tiff"];
        SKTexture *texture4 = [SKTexture textureWithImageNamed:@"Fly Trap.tiff"];
        SKTexture *texture5 = [SKTexture textureWithImageNamed:@"radiation.png"];
        SKTexture *texture6 = [SKTexture textureWithImageNamed:@"rad glow.png"];


        sprite_bee = [SKSpriteNode spriteNodeWithTexture:texture1];
        sprite_bee.position = CGPointMake(160, 100);
        sprite_bee.zPosition = 100;
        sprite_bee.size = CGSizeMake(110, 110);

        SKAction *fly = [SKAction animateWithTextures:@[texture1,texture2] timePerFrame:.2];
        [sprite_bee runAction:[SKAction repeatActionForever:fly]];

        [self addChild:sprite_bee];

        collide = NO;
        //Plant creation

        speed = 100;
        score = 0;
        x_flower = 40;
        x_Trap1 = 160;
        x_Trap2 = 280;

        sprite_radGlow = [SKSpriteNode spriteNodeWithImageNamed:@"rad glow.png"];
        sprite_radGlow.position = CGPointMake(100,3000);
        sprite_radGlow.size = CGSizeMake(140, 140);
        sprite_radGlow.zPosition = 50;

        SKAction *glow = [SKAction sequence:@[
                                              [SKAction fadeOutWithDuration:.5],
                                              [SKAction fadeInWithDuration:.5],
                                              ]];

        [sprite_radGlow runAction:[SKAction repeatActionForever:glow]];

        [self addChild: sprite_radGlow];

        sprite_flower = [SKSpriteNode spriteNodeWithTexture:texture3];
        sprite_flower.position = CGPointMake(40, 300);
        sprite_flower.size = CGSizeMake(100, 100);

        [self addChild:sprite_flower];


        sprite_flyTrap = [SKSpriteNode spriteNodeWithTexture:texture4];
        sprite_flyTrap.position = CGPointMake(160, 300);
        sprite_flyTrap.size = CGSizeMake(100, 100);


        [self addChild:sprite_flyTrap];

        sprite_flyTrap2 = [SKSpriteNode spriteNodeWithTexture:texture4];
        sprite_flyTrap2.position = CGPointMake(280, 300);
        sprite_flyTrap2.size = CGSizeMake(100, 100);


        [self addChild:sprite_flyTrap2];

        sprite_rad = [SKSpriteNode spriteNodeWithTexture:texture5];
        sprite_rad.position = CGPointMake(160, 3000);
        sprite_rad.size = CGSizeMake(500, 100);


        [self addChild:sprite_rad];

    }
    return self;
}
@end

【问题讨论】:

  • 显示一些相关代码。并展示如何在 BEGameScene 类上声明 delegate 属性。
  • 也许您应该向我们展示异常堆栈跟踪,并为我们提供一些有关如何构建应用程序的线索。并查看您在setDelegate 进行的所有地方。

标签: ios objective-c xcode xcode6


【解决方案1】:

所以我认为您的问题可能与 SKScene 在 iOS 8 中添加 delegate field 有关。

我建议将您的内部委托字段重命名为其他名称,例如 gameSceneDelgate,看看是否能解决您的问题。

【讨论】:

  • 我写的一个小游戏也遇到了同样的问题,并且委托字段的引入也让我崩溃了。
猜你喜欢
  • 2016-02-09
  • 1970-01-01
  • 1970-01-01
  • 2019-08-28
  • 2012-07-24
相关资源
最近更新 更多