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

Objective-C

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

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

22.02.2014, 13:58. Просмотров 866. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пустой массив (Objective-C):

Пустой массив - VBA
Коллеги, проверить есть ли в динамическом массиве измерения для записи элементов или он не определен? Заранее благодарю! :)

пустой массив из 10 элементов - C++
в чем ошибка ? #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main() { int arr; int i; for (int i=0;...

Пустой массив $_FILES в wordpress - WordPress
День не добрый( Посоветуйте пожалуйста в чем может быть причина, надеюсь на Ваш опыт, суть проблемы такова создаю форму в админке...

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

Как создать пустой массив - C#
Как создать пустой массив?

Пустой массив сессии PHP - PHP
Всякое перечитал, но вроде как размер файла сессии не ограничен суть в том пытаюсь засунуть около 8 хешированных значений в сессию по...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
22.02.2014, 15:46 #2
Что значит "залипает" и что вы ожидаете от своего творения? То что объекты в массиве появятся сами собой?
0
zulkis
682 / 609 / 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];
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 / 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
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 16:41
Привет! Вот еще темы с ответами:

Как проверить, пустой ли массив? - C++/CLI
Скажите, пожалуйста, как в Visual Studio 2010, проверить пустой ли массив?

Как узнать пустой ли массив?? - Visual Basic
Собственно сабж. Есть большая программа, в процессе выполнения в которой динамический массив &quot;Ерэйзица&quot;, потом идет выгрузка массива в...

Как объявить пустой массив? - Pascal
Привет,народ,помогите,кто что знает..вот задача такая стоит из массива x переписать положительные элементы в массив y, а отрицательные в...

Добавление элементов в пустой массив - C#
Всем привет, новичок в сишарпе. Создаю массив, в который нужно будет добавить n-e количество элементов. int i = 0; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.02.2014, 16:41
Ответ Создать тему
Опции темы

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