教授から、Xcode を使用して Objective-C 用の .h および .m ファイルを作成する必要があるという主な指示がありました。ほぼ完了しましたが、「式の結果が使用されていません」という2つの警告を取り除く方法がわかりません。エラーは、サイズ 100 の配列を作成するための init メソッドに関係しています。ここでは、メインがオブジェクトを作成し、次にコード化したメソッドを不適切に呼び出します。この部分は先生から渡されたもので、変更できません。
// 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」行からのものです。2 つの警告が同じエラーを説明していることはわかっています。以下のコードは私のものなので、上記とは異なり、変更できます。
@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:@""];
}
}
これにより、警告の 1 つが解消されましたが、プログラムが正しく実行されていないため、他の方法で行う作業がまだ残っています。ただし、この特定の質問は対処されており、これが現在どのように機能しているかをよりよく理解しています。
実際のソリューション
@synthesize board=_board;
-(void) initBoard{
_board = [NSMutableArray arrayWithCapacity:100];
for(int i =0; i < 100; i++){
[_board addObject:@" "];
}
}
これは、Hermannごとに最終的に機能したものです。私はこれを一度試してみてうまくいかなかったことを誓います。Xcode は時々私を苛立たせると思います。