我的目标C非常生疏,真的不记得如何在创建时在自定义类中启动变量。
(id)init
行上的所有错误:
缺少*类型说明符,默认为'int'(警告)
*类型名称需要说明符或限定符
*预期';'在声明清单的末尾
#import "Seat.h"
@implementation Seat
{
(id)init
{
self = [super init];
player = NULL;
position = -1;
state = "empty";
}
}
@end
很抱歉,如果这看起来很简单,看起来很简单,我找不到太多内容。感谢
答案 0 :(得分:5)
你遗漏了一些东西:
-(id)init // A minus says it's an instance method
{
if (self = [super init]) { // You should check the return value of [super init]
player = NULL; // Should this be nil?
position = -1;
state = "empty"; // Should this be @"empty"?
}
return self; // You need to return self
}
如果player
是Objective C对象,而不是C指针,则更常规的是分配nil
而不是NULL
。对于字符串文字也是如此:如果state
为NSString *
,则应为其分配@"empty"
。
哦,并且@implementation
不应该用大括号括起来:@end
标记足以找到实现块结束的位置。
答案 1 :(得分:5)
在右侧实用程序部分,检查下半部分代码段库。 搜索'init'关键字。拖放代码
。
答案 2 :(得分:3)
你有一套花括号太多了。你还需要从init返回self(并且大多数人都会检查来自[super init]
的非零结果。)
@implementation Seat
(id)init
{
self = [super init];
if (self) {
player = NULL;
position = -1;
state = "empty";
}
return self;
}
@end