对Obj-C来说很新,并且对.h和.m文件的语法非常困惑。我要做的就是将一个数组传递给我的初始化器。我的.h文件中显示Expected a type
并在我的.m文件上显示Conflicting parameter types in implementation of initWithColor': '__strong id' vs 'GLKVector4' (aka 'union _GLKVector4')
Square.h
#import <Foundation/Foundation.h>
@interface Square : NSObject
- (id) initWithColor : (GLKVector4) col;
@end
Square.m
#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
答案 0 :(得分:1)
我会猜一猜。 。
您的代码看起来很好,我认为只需执行以下操作:
无关:
顺便说一下,通过现代的Objective-c惯例,它被认为是一种强调你的ivar名称的良好做法,如下所示:
@implementation Square {
GLKVector4 _color;
}
在Xcode或AppCode中,您可以从Refactor菜单重命名符号(ivar,property等)。
答案 1 :(得分:0)
将#import <GLKit/GLKit.h>
移至Square.h,因为您在该文件中引用了GLKVector4
。