Как создатьв Objective-C? - PullRequest
       1

Как создатьв Objective-C?

0 голосов
/ 17 сентября 2011

В конце дня я хотел бы сделать

NSDictionary *nodeData = [[NSDictionary alloc] initWithObjects:numbers forKeys:characters];

, где numbers - это NSArray цифр, а characters - NSArray символов.

Я подозреваю, что всегда могу сделать

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

[numbers addObject:[[NSNumber alloc] initWithInt:12]];
[numbers addObject:[[NSNumber alloc] initWithInt:23]];
[numbers addObject:[[NSNumber alloc] initWithInt:45]];

Что касается персонажей ... я не уверен.Это нормально?

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

[characters addObject:@"a"];
[characters addObject:@"b"];

Вопросы:

  • Как заключить символ в класс объекта?
  • Есть лиспособ добавить кучу целых чисел сразу, не включая каждый из них в alloc init NSNumber?

Ответы [ 2 ]

1 голос
/ 17 сентября 2011

1- Самый простой способ пометить персонажа - это поставить его в NString, как вы это сделали.

2- Самый простой способ пометить целое число - написать:

NSNumber *myIntBox = [NSNumber numberWithInt:8];

1bis - Вы также можете пометить символ в NSNumber:

NSNumber *myCharBox = [NSNumber numberWithChar:'c'];

Кратчайший способ инициализации словаря с такими константами - это что-то вроде:

NSDictionary *myDict = [NSDictionary dictionaryWithObjectsAndKeys:
                    [NSNumber numberWithInt:1], @"a", 
                    [NSNumber numberWithInt:2], @"b",
                    [NSNumber numberWithInt:3], @"c",
                    [NSNumber numberWithInt:4], @"d",
                    [NSNumber numberWithInt:5], @"e",
                    [NSNumber numberWithInt:6], @"f",
                    [NSNumber numberWithInt:7], @"g",
                    [NSNumber numberWithInt:8], @"h",
                    [NSNumber numberWithInt:9], @"i",
                    [NSNumber numberWithInt:10],@"j", 
                    nil];
1 голос
/ 17 сентября 2011

Когда вы добавляете object к массиву, который object автоматически равен retained, так что в вашем случае у вас есть утечка памяти. Лучше всего добавить autoreleased object, если вы будете использовать его значение в другом месте. Например:

[numbers addObject:[NSNumber numberWithInt:12]];

Есть ли способ добавить сразу несколько целых чисел, не включая каждое из них в alloc init NSNumber?

Да, это так. Вы можете использовать c-style кодирование:

int *array = (int*)calloc(sizeof_array, sizeof(int));
array[0] = 12;
array[23] = 23;
// using your array
free(array);

Таким образом, вы также можете хранить символы:

unsigned char *carray = (unsigned char*)calloc(sizeof_array, sizeof(unsigned char));
carray[0] = 'a';
carray[23] = 'b';
// using your array
free(carray);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...