-3

所以我是 Objective-C 的新手,但不是 OOP 编程的新手。我正在尝试创建一个将“Squares”添加到 NSMutableArray 的类,但是当我编写该类并运行我的应用程序时,它崩溃了。这是 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”

@实施广场

-(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]; [方setPosition:pos];

[squares addObject: square]; }

-(NSMutableArray *) getSquares{ 返回正方形;}

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

} }

-(void) 渲染{ for (int i = 0; i < squares.count; i++){ Square *s; s = [正方形 objectAtIndex: i]; [s 渲染];

} }

@结尾

那么这不是因为我编程错误而不起作用吗?

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++)会算得太远,你应该使用<而不是<=.

更好的是:

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

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