1

对 Obj-C 非常陌生,对 .h 和 .m 文件的语法非常困惑。我要做的就是将一个数组传递给我的初始化程序。我的 .h 文件显示错误,Expected a type而 .m 文件显示警告Conflicting parameter types in implementation of initWithColor': '__strong id' vs 'GLKVector4' (aka 'union _GLKVector4')

平方.h

#import <Foundation/Foundation.h>

@interface Square : NSObject

- (id) initWithColor : (GLKVector4) col;

@end

平方米

#import "Square.h"
#import <GLKit/GLKit.h>

#define BG_WIDTH 500.0f
#define BG_HEIGHT 400.0f

typedef struct {
    GLKVector3 positionCoordinates;
    GLKVector2 textureCoordinates;
    GLKVector3 normalCoordinates;
} VertexData;

VertexData bgRect[] = {
    { { 0.0f,  0.0f,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f}, },   // 2D - forward facing only
    { { BG_WIDTH,  0.0f,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f} },
    { { 0.0f,  BG_HEIGHT,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f} },
    { { 0.0f,  BG_HEIGHT,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f} },
    { { BG_WIDTH,  0.0f,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f} },
    { { BG_WIDTH,  BG_HEIGHT,  0.0f}, {0.0f, 0.0f}, { 0.0f,  0.0f, 1.0f} },};

@implementation Square {
    GLKVector4 color;
}

- (id) initWithColor : (GLKVector4) col {
    self = [super init];
    if (self) {
        color = col;
    }

    return self;
}

@end
4

2 回答 2

1

我来猜一猜。.

您的代码看起来不错,我认为只需执行以下操作:

  • 确保链接到 GLKit 框架。
  • 将导入添加到您的头文件#import <GLKit/GLKit.h>

在此处输入图像描述

不相关的:

顺便说一句,根据现代的objective-c约定,强调您的ivar名称被认为是一种很好的做法,如下所示:

@implementation Square {
    GLKVector4 _color;
}

在 Xcode 或 AppCode 中,您可以从 Refactor 菜单重命名符号(ivar、属性等)。

于 2013-11-02T14:47:23.057 回答
0

进入Square.h #import <GLKit/GLKit.h>,因为您GLKVector4在该文件中引用。

于 2013-11-02T14:59:21.287 回答