Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 有人能给我解释一下这些错误吗?_Iphone_Objective C_Cocoa Touch - Fatal编程技术网

Iphone 有人能给我解释一下这些错误吗?

Iphone 有人能给我解释一下这些错误吗?,iphone,objective-c,cocoa-touch,Iphone,Objective C,Cocoa Touch,我犯了这些奇怪的错误,但我不明白。以下是错误: 错误:可变大小的对象可能未初始化(#1) 错误:Objective-C类“笑话”(1)的静态分配实例 错误:Objective-C类“笑话”(1)的静态分配实例 错误:无法转换为指针类型(#2) (注意:错误后的数字将指示错误在我的实现文件中的位置) 这是我的.m文件: #import "Joke.h" @implementation Joke @synthesize joke; @synthesize rating;

我犯了这些奇怪的错误,但我不明白。以下是错误:

错误:可变大小的对象可能未初始化(#1)

错误:Objective-C类“笑话”(1)的静态分配实例

错误:Objective-C类“笑话”(1)的静态分配实例

错误:无法转换为指针类型(#2)

(注意:错误后的数字将指示错误在我的实现文件中的位置)

这是我的.m文件:

#import "Joke.h"


@implementation Joke
@synthesize joke;
@synthesize rating;


- (id)init {
[super init];
return self;
}

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

+ (id)jokeWithValue:(NSString *)joke {
Joke j = [[Joke alloc] init]; // (# 1) This is where #1 errors occurred
j.joke = joke;
return [j autorelease]; // (# 2) This is where #2 errors occurred
 }

@synthesize joke;
@synthesize rating;

@end
谢谢

在变量之前需要一个“*”,例如,“Joke*j=[[Joke alloc]init];”

你也只需要@synthesis一次,而不是每个属性。这样地:
@综合笑话,评分

Objective-C对象的实例必须是指针,这导致了您的问题。笑话的初始化应为:

Joke *j = [[Joke alloc] init];

此外,将对象本身作为循环引用是个坏主意。你可以用j->笑话->笑话->笑话->笑话->笑话进行无限递归…

啊,谢谢!一个小小的astrid怎么会导致你的应用程序失败!