NSInteger аргумент недопустимое значение - PullRequest
0 голосов
/ 06 октября 2011

У меня есть следующий класс:

  @interface MyObj : NSObject {

      NSInteger _x;
      NSInteger _y;
      ....
  }

  @property(nonatomic, readonly) NSInteger x;
  @property(nonatomic, readonly) NSInteger y;
  ....

  - (id)initWithX:(NSInteger)posX Y:(NSInteger)posY;

и реализация:

  @implementation MyObj
  @synthesize x = _x;
  @synthesize y = _y;

  - (id)initWithX:(NSInteger)posX Y:(NSInteger)posY{
       self = [super init];
       _x = posX;
       _y = posY;
       return self;
  }

Я пытаюсь запустить массив MyObj следующим образом:

    for (NSInteger y=0; y<5; ++y) {

    NSMutableArray *rowContent = [[NSMutableArray alloc] init];

    for (NSInteger x=0; x<5; ++x) {

        MyObj *myObj = [[MyObj alloc] initWithX:x Y:y];
                    ....
                    [rowContent addObject:myObj];

Для первой итерации, когда x = 0, y = 0 myObj, созданный, как и ожидалось, но когда x = 1, y = 0 в функции initWithX, я вижу, что значение аргумента posX равно 1065353216. Поэтому я получаю недопустимый объект myObj с ivar _x = 1065353216. Я не могу понять, почему так случилось?

...