Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
#1

Пустой массив

22.02.2014, 13:58. Просмотров 1017. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2014, 13:58
Ответы с готовыми решениями:

Пустой массив
Коллеги, проверить есть ли в динамическом массиве измерения для записи...

Пустой массив
Здравствуйте! Как создать пустой массив, размер и элемементы которого будут...

Пустой массив
Что такое пустой массив и как его создавать. Нужен ответ для экзамена, в...

Массив с пустой размерностью
Встретилось такое определение класса class A { public: ..... static...

пустой массив из 10 элементов
в чем ошибка ? #include &lt;iostream&gt; #include &lt;string&gt; using namespace std;...

8
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 15:46 #2
Что значит "залипает" и что вы ожидаете от своего творения? То что объекты в массиве появятся сами собой?
0
zulkis
684 / 611 / 43
Регистрация: 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];
1
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'
Для вас это не достаточно исчерпывающее объяснение или вы консоль даже не читали?
1
Пан_Атаман
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 34
22.02.2014, 16:29  [ТС] #5
я так понимаю при написании @3 или @7- я присваиваю занчание элемента массива? иными словами array[i]=3?
0
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 / 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 ?
0
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
0
Megabar
22 / 22 / 7
Регистрация: 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
0
25.02.2014, 16:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 16:41

Почему я получаю пустой массив?
Здравствуйте. Не могу понять. Почему я получаю пустой массив? Не важно как...

Как объявить пустой массив?
Привет,народ,помогите,кто что знает..вот задача такая стоит из массива x...

Пустой массив print_r($_FILES)
Добрый день форумчане! Сталкиваюсь с проблемой при аплоаде файлов. Выбираю...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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