Форум программистов, компьютерный форум CyberForum.ru

Objective-C

Войти
Регистрация
Восстановить пароль
 
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
#1

Пустой массив - Objective-C

22.02.2014, 13:58. Просмотров 821. Ответов 8
Метки нет (Все метки)

Всем привет,

не могу понять, почему obj-c "залипает"

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//Пустой массив
 
#import <Foundation/foundation.h>
 
int main ()
{
    @autoreleasepool
    {
        NSMutableArray *array= [NSMutableArray array];
        for (int i=0; i<=5; i++)
        {
            [array insertObject:0 atIndex:i];
            NSLog(@"%@", [array objectAtIndex:i]);
        }
    }
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 13:58     Пустой массив
Посмотрите здесь:

VBA Пустой массив
Как объявить символьный массив и числовой массив? Objective-C
пустой массив из 10 элементов C++
Пустой массив print_r($_FILES) PHP

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 15:46     Пустой массив #2
Что значит "залипает" и что вы ожидаете от своего творения? То что объекты в массиве появятся сами собой?
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
22.02.2014, 16:05     Пустой массив #3
Пан_Атаман, А что вы ожидаете? Какого поведения?
Подсказка:
Так нельзя делать:
Objective-C
1
[array insertObject:0 atIndex:i];
Так можно:
Objective-C
1
[array insertObject:@0 atIndex:i];
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 16:17     Пустой массив #4
Цитата Сообщение от zulkis Посмотреть сообщение
Так нельзя делать:
Код Objective-C
1
[array insertObject:0 atIndex:i];
Ого, даже не заметил этого, сходу подумал что 0 - это индекс.

Пан_Атаман, запустил ваш код
Objective-C
1
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSArrayM insertObject:atIndex:]: object cannot be nil'
Для вас это не достаточно исчерпывающее объяснение или вы консоль даже не читали?
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
22.02.2014, 16:29  [ТС]     Пустой массив #5
я так понимаю при написании @3 или @7- я присваиваю занчание элемента массива? иными словами array[i]=3?
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 16:48     Пустой массив #6
Цитата Сообщение от Пан_Атаман Посмотреть сообщение
я так понимаю при написании @3 или @7- я присваиваю занчание элемента массива? иными словами array[i]=3?
Нет.

NSArray and its subclass NSMutableArray manage ordered collections of objects called arrays. NSArray creates static arrays, and NSMutableArray creates dynamic arrays. You can use arrays when you need an ordered collection of objects.
"objects", понимаете? Вы бы прежде, чем использовать метод посмотрели доку или хоть объявление метода:
Objective-C
1
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index
Ваш 0 - это ни разу не id, вернее если преобразовать его к id, то это будет nil. Соответственно:
Raises an NSInvalidArgumentException if anObject is nil.
Для того, чтобы хранить простые типы в массивах используют классы-обертки NSValue и его наследник NSNumber. @0 - это синтаксический сахар, и по сути аналогично [NSNumber numberWithInt:0]

An NSValue object is a simple container for a single C or Objective-C data item. It can hold any of the scalar types such as int, float, and char, as well as pointers, structures, and object ids. The purpose of this class is to allow items of such data types to be added to collections such as instances of NSArray and NSSet, which require their elements to be objects.
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
22.02.2014, 18:16  [ТС]     Пустой массив #7
Всё, кажется начинаю разбираться.

NSArray, NSMutableArray- подходит для символьных объектов, дат и прочего. Для численных же массивов (int, float) используется классический вид си:

C
1
int numbers[2]={1,2,3};
Добавлено через 31 секунду
Скажите, а что всё-таки хначит @5 ?
Xavier
in god we trust
74 / 74 / 8
Регистрация: 20.04.2012
Сообщений: 201
22.02.2014, 20:39     Пустой массив #8
Цитата Сообщение от Пан_Атаман Посмотреть сообщение
Скажите, а что всё-таки хначит @5 ?
Уже объяснили же:
Цитата Сообщение от glvrzzz Посмотреть сообщение
Для того, чтобы хранить простые типы в массивах используют классы-обертки NSValue и его наследник NSNumber. @0 - это синтаксический сахар, и по сути аналогично [NSNumber numberWithInt:0]
@5 - объект NSNumber со значение 5
Megabar
22 / 22 / 3
Регистрация: 01.12.2013
Сообщений: 93
25.02.2014, 16:41     Пустой массив #9
Цитата Сообщение от Пан_Атаман Посмотреть сообщение
Скажите, а что всё-таки хначит @5 ?
Не с той точки начали изучение ObjC. Попишите программы с применением контейнеров (NSArray, NSDictionary и т.д.), добавляйте, изменяйте значения типов int, double... используя [NSNumber numberWithInt:0], потом вам надоест и вы поймете, что необходима такая вещь как
Objective-C
1
@0, @300, @YES
Yandex
Объявления
25.02.2014, 16:41     Пустой массив
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru