Вы не можете назначить локальный массив указателю, который вы хотите закрепить после текущего кадра стека. Вы должны использовать динамическую память, полученную из malloc()
или подобную функцию. Если вы хотите использовать байтовый массив, вам потребуется malloc()
, memcpy()
и free()
памяти соответствующим образом каждый раз, когда вы хотите переназначить ее.
Например, это будет:
- (IBAction) checkNow {
NSLog(@"now? %d %d %d", theBytes[0], theBytes[1], theBytes[2]);
}
- (void)viewDidLoad {
[super viewDidLoad];
uint tryThis[3] = {72,2,244};
theBytes = malloc(3 * sizeof(uint));
memcpy(theBytes, tryThis, 3 * sizeof(uint));
[self checkNow];
}
// In order not to leak, you'll also need:
- (void)dealloc {
free(theBytes);
[super dealloc];
}
Да, работа с массивами Си - это боль. Вот почему этого обычно избегают на любом другом языке, даже близких родственниках, таких как C ++ и Objective-C.