Objective-C, инициализация массива - PullRequest
1 голос
/ 12 апреля 2011
int num1, num2,num3,num4, i=0;
NSMutableArray *charArray = [[NSMutableArray alloc] init];

while(num1 != 0 && num2 != 0) {
  num3 = num1 & 1;
  num4 = num2 & 1;
  if(num3 != num4) {
    if(num3 == 0) {
      charArray[i++]= '0';
      charArray[i++]= '1';  
    } else {
      charArray[i++]='1';
      charArray[i++]='0';   
    }
  }
  num1 = num1 > 1;
  num2 = num2 > 1;
}

}

Я новичок в объективе-c, может кто-нибудь сказать мне, что с этим не так?

Ответы [ 2 ]

4 голосов
/ 12 апреля 2011

Вы не можете использовать обычные массивоподобные подписки с NSArrays (и NSMutableArrays). Чтобы добавить элемент, вам нужно вызвать метод addObject. Т.е. [charArray addObject:obj].

Другое предостережение: вы не можете добавить голый char к NSArray, он должен быть типа Objective-C. Вы можете использовать класс NSNumber, чтобы обернуть его. Таким образом, ваш код будет:

[charArray addObject:[NSNumber numberWithChar:'0']];
[charArray addObject:[NSNumber numberWithChar:'1']];

Но вы все равно можете использовать обычный массив C и оставить свой код без изменений, что, вероятно, является лучшим решением в вашем случае. т.е.

char charArray[MAX_SIZE];
3 голосов
/ 12 апреля 2011

Вы не можете получить доступ к NSMutableArray, используя синтаксис [] для C.

Вам необходимо использовать методы -[NSMutableArray addObject:] или -[NSMutableArray insertObject:atIndex:].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...