【发布时间】:2013-02-19 08:59:52
【问题描述】:
我的教授给了我一个主要内容,我必须使用 Xcode 在 Objective-C 中制作 .h 和 .m 文件。我几乎完成了,但有两个警告我无法弄清楚如何摆脱,“未使用的表达式结果”。这些错误与我创建大小为 100 的数组的 init 方法有关。这里是 main 创建一个对象然后调用我不正确编码的方法的地方,这部分是我的老师给出的,我无法更改它:
// main.m
// ChutesAndLadders
#import <Foundation/Foundation.h>
#import "ChutesAndLadders.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
ChutesAndLadders *cl = [[ChutesAndLadders alloc]init];
[cl initBoard];
[cl makeChutes:10];
[cl makeLadders:10];
int chutes=0;
int ladders=0;
for(int i=0;i<cl.board.count;i++){
NSString * cell = (NSString *)[cl.board objectAtIndex:i];
int additionalSpaces = (int)[cl addToMove:cell];
if(additionalSpaces>0)
ladders++;
else if (additionalSpaces<0)
chutes++;
}
[cl printBoard];
}
return 0;
}
这是我的方法的相关部分:错误来自上面的“initBoard”方法和下面的“initWithCapacity”行。我知道这两个警告描述的是同一个错误。下面的代码是我的,所以我可以改变它,不像上面的。
@synthesize board = _board;
-(id) initBoard
if((self = [super init]){
[board intiWithCapacity: 100];
for(int i = 0; i < 100; i++){
[board addObject:@""];
}
}
return self;
}
这是我在 .h 文件中声明“板”的相关代码:
@interface ChutesAndLadders : NSObject{
@private
NSMutableArray * board;
}
@property (readwrite, retain) NSMutableArray *board;
-(id) initBoard;
我尝试了很多语法上的小改动,但无济于事。 请不要直接告诉我解决方案,但我认为我只需要在正确的方向上轻推或推一下,我会在找到解决方案后发布解决方案。
伪解:
@synthesize board=board;
-(void) initBoard{
_board = [board initWithCapacity: 100];
for(int i =0; i < 100; i++){
[_board addObject:@""];
}
}
这消除了其中一个警告,但我的程序运行不正常,所以我还有其他方法要做。虽然这个具体问题已经得到解决,但我对它现在的工作方式有了更好的了解。
实际解决方案
@synthesize board=_board;
-(void) initBoard{
_board = [NSMutableArray arrayWithCapacity:100];
for(int i =0; i < 100; i++){
[_board addObject:@" "];
}
}
这是最终根据Hermann 工作的一个。我发誓我尝试过一次但没有成功,所以我一直在玩并改变一些东西(把它搞得更糟),然后最终又回到了这个,它当然奏效了。 Xcode 的谎言有时会激怒我。
【问题讨论】:
-
不能两次初始化对象...而board是实例对象的一个属性...
标签: objective-c init