2013-10-13 2 views
0

Мне нужно очистить 2 массива, прежде чем я выполню функцию во второй раз.Сброс массивов

Они первоначально установки по всему миру, как: -

NSString *allAnswers[10]; 
int used[6]; 

Что было бы необходимо, чтобы очистить/сбросить их перед повторным запуском функции?

Спасибо.

+0

Очистить означает что? Вы хотите назначить '0' всем? – haccks

+4

Вы уверены, что это C, а не Objective-C? Нет такой вещи, как «очистка массива» в C. –

+0

Используйте 'NSNutableArray', а не« c »массив указателей« NSString ». – zaph

ответ

2

Вы можете перемещаться по этим элементам, возвращая их значения в любое удобное для вас время.

for (NSInteger i = 0; i < 10; i++) 
    allAnswers[i] = nil; 

for (NSInteger i = 0; i < 6; i++) 
    used[i] = 0; 

При использовании Objective-C, вы можете рассмотреть возможность использования NSMutableArray в будущем, а не C-языковых массивов, как эти.

0

Используйте петлю, чтобы очистить ваши массивы на 0 или любое другое значение, которое вы хотите.

for(int i = 0; i < 10; i++) 
{ 
    if(i < 6) 
     used[i] = 0; 
    allAnswer[i] = 0; 
} 
0
memset(allAnswers, 0, sizeof(NSString*)*10);//This statement to clear array of NSString pointers 
memset(used, 0, sizeof(int)*6);//This statement to clear array of integers. 

В качестве альтернативы вы можете запустить цикл, чтобы очистить каждый элемент в отдельности.

+0

Это не будет работать с массивом 'NSString'. Вы обходите управление памятью Objective-C, и вы будете течь. – Rob

+0

@rob Я проверил его, он показывает плохую ошибку доступа. Это из-за утечки памяти? И спасибо за исправление :) – APan

+0

Я удивлен, что у вас плохая ошибка доступа, но она определенно протекает. – Rob