我不是白痴,但标题的文件让我感觉像一个时候。我有什么可能是一个过于复杂的设置具有一个错误,我无法解决。在这里,它是在约一样简单细节,我可以做。

  • 我有一个控制器类包含模型类。
  • 我有一个场景类捕获的行动和与控制器。
  • 我有一个层级,与会谈的模型输出国家的模型。
  • 现场类包含的层级的仅仅是为输出。
  • 场面必须保持层确定通过的Cocos2D框架。
  • 特定的现场课程从一个RootScene类拥有的参照控制器类。
  • 具体层的课程从一个RootLayer类拥有的参照模型类。
  • 控制器,负责建立现场和现场是负责创建层。

该问题当做一个层和通过控制器的型号的层的模型(在 AScene.m).我得到的"请求为会员'模式'在的东西不是一个结构或联盟"。铸造不和我在一损失如何让这些类交谈。我认为问题的一部分可能是那个控制器类包含的模型类。

控制器。h

#import <Foundation/Foundation.h>

@class Model;
@class AScene;

@interface Controller : NSObject {
    Model *Model;
}
@property (nonatomic, retain) Model *Model;
-(void)runScene;

控制器。m

#import "Controller.h"

#import "Model.h"
#import "AScene.h"

@implementation Controller

@synthesize Model;

- (void)runScene {
    AScene *newScene = [[AScene alloc] init];
    newScene.controller = self;
}

RootScene.h

#import "cocos2d.h"

@class Controller;

@interface RootScene : Scene {
    Controller *controller;
}
@property (nonatomic, retain) Controller *controller;

@end

RootScene.m

#import "RootScene.h"
#import "Controller.h"

@implementation RootScene

@synthesize controller;

- (id) init {
    self = [super init];
    if (self != nil) {
        //
    }
    return self;
}

- (void) dealloc {
    [controller release];
    [super dealloc];
}

@end

AScene.h

#import "RootScene.h"

@class ALayer;
@class Model;

@interface AScene : RootScene {
}

@end

AScene.m

#import "AScene.h"
#import "ALayer.h"
#import "Model.h"

@implementation AScene

- (id) init {
    self = [super init];
    if (self != nil) {
        ALayer *newLayer = [ALayer node];
        newLayer.model = controller.Model; // <-- Request for member 'Model' in something not a stucture or union
        [self addChild:statusScreenLayer];
    }
    return self;
}

- (void) dealloc {
    [super dealloc];
}

@end

RootLayer.h

#import "cocos2d.h"

@class Model;

@interface RootLayer : Layer {
    Model *model;
}
@property (nonatomic, retain) Model *model;

@end

RootLayer.m

#import "RootLayer.h"

#import "Model.h"

@implementation RootLayer

@synthesize model;

- (id) init {
    self = [super init];
    if (self != nil) {
        //
    }
    return self;
}

- (void) dealloc {
    [model release];
    [super dealloc];
}

@end

ALayer.h

#import "RootLayer.h"

@interface ALayer : RootLayer {
}
-(void) draw;

@end

ALayer.m

#import "ALayer.h"

@implementation ALayer

-(void) draw {
    // draw based on state of the model
}

@end
有帮助吗?

解决方案

你的执行情况 AScene 不不 #import 标头的 Controller.

编辑: 明确的解决方案。

在AScene.m添加:

#import "Controller.h"

其他提示

尼古拉看来是正确的。除此之外,最好的做法会决定性(如实例变量)不应该开始与一个大写字母。你只是要求受到伤害。使用这些替代:

控制器。h

@interface Controller : NSObject {
    Model *model;
}
@property (nonatomic, retain) Model *model;

控制器。m

@synthesize model;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top