-3

ですから、私はObjective-Cは初めてですが、OOPプログラミングは初めてです。NSMutableArrayに「Squares」を追加するクラスを作成しようとしていますが、クラスを作成してアプリを実行すると、クラッシュしました。Squares.hファイルは次のとおりです。

#import <Foundation/Foundation.h>
#import "Square.h"

@interface Squares : NSObject {
    NSMutableArray *squares; }

-(id) init;
-(void) addSquare: (CGPoint) pos;
-(NSMutableArray *) getSquares;
-(void) update;
-(void) render;

@end

そして、これがSquares.mファイルです。

「Squares.h」をインポートします

@implementation Squares

-(id)init {self = [super init]; if(self!= nil){squares = [[NSMutableArray alloc] init];

[self addSquare: CGPointMake(100, 100)];
      }
  return self; }

-(void)addSquare:(CGPoint)pos {Square * square; square = [[Square alloc] init]; [square setPosition:pos];

[squares addObject: square]; }

-(NSMutableArray *)getSquares{リターンスクエア; }

-(void)update {for(int i = 0; i <squares.count; i ++){Square * s; s = [squares objectAtIndex:i]; [s移動];

} }

-(void)render {for(int i = 0; i <squares.count; i ++){Square * s; s = [squares objectAtIndex:i]; [レンダリング];

} }

@終わり

それで、私がこれを間違ってプログラムしたという理由だけでこれは機能していませんか?

4

2 に答える 2

1

それ以外のfor (int i = 0; i <= squares.count; i++

試すfor (int i = 0; i < squares.count; i++

于 2012-08-14T17:53:00.227 に答える
0

他の人が指摘しているようSquare *s = [Square alloc];に、updateandrenderメソッドは役に立たない。

アンドレイがあなたに言ったように、for (int i = 0; i <= squares.count; i++)1つを数えすぎるので、<の代わりに使用する必要があり<=ます。

より良いのは、次のことです。

-(void) update{
    [squares makeObjectsPerformSelector:@selector(move)]; }

-(void) render{
    [squares makeObjectsPerformSelector:@selector(render)]; }
于 2012-08-14T18:10:06.033 に答える