С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
4 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 44

property

21.08.2012, 17:03. Показов 1252. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые форумчане!
Возникла проблема со свойствами когда начал использовать NSMutableArray;

Objective-C
1
2
3
4
5
6
@interface ViewController : UIViewController <UIActionSheetDelegate, UIAlertViewDelegate, UIPickerViewDelegate, UIPickerViewDataSource>
 
...
@property (strong, nonatomic) NSMutableArray  * varDay;
...
@end
В ViewController синтезировал его.

Objective-C
1
2
3
4
5
6
7
8
@interface ViewController ()
 
@end
 
@implementation ViewController
@synthesize varDay;
.....
@end
Далее в viewDidLoad пытаюсь записать в него объекты с помощью сообщения addObject

Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
- (void)viewDidLoad
{
    [super viewDidLoad];
    
    
    for(int i = 1; i <= 30; i++)
        {
            [self.varDay addObject:[[NSString alloc]initWithFormat:@"%d", i]];
        }
 
    NSLog(@"day = %@", varDay);
}
На консоле выводит day = (null). Нечего не записалось. Можите объснять в чем проблемма?
Может быть я память не выделил для массива?

Проблемму можно решить таким образом.

Objective-C
1
2
3
4
5
6
7
8
    NSMutableArray * _varDay = [[NSMutableArray alloc]init];
    for(int i = 1; i <= 30; i++)
        {
            [_varDay addObject:[[NSString alloc]initWithFormat:@"%d", i]];
        }
 
    self.varDay = _varDay;
    NSLog(@"day = %@", varDay);
Сдесь я выделяю память для указателя _varDay типа NSMutableArray. После операций с ним я присваиваю это значение self.varDay, как раз моему свойству.

Можно ли решить проблему не объявляю новый массив, а работать со свойством и нормально посылать ему сообщения @property (strong, nonatomic) NSMutableArray * varDay; ?

Дело в том что если я потом пошлю сообщение [_varDay removeAllObjects]; то объекты все удаляться у меня из свойства varDay.

Подскажите подскажите пожалуйста наиболее оптимальный вариант, а то второй вариант не безопастный
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.08.2012, 17:03
Ответы с готовыми решениями:

Outlet, @property
Добрый день, встал вопрос: почему при декларации оутлета добавляется только @property: @interface MainViewController :...

@property (readonly)
Добрый вечер, Решил немного поизучать obj-c. Пока не очень привычно Вопрос такой: мутаторы assign, retain, copy влияют только на...

Property и synthesize
Доброго времени суток! Недавно начал изучать Objective-C, и столкнулся с проблемой при решении задачи. Вообщем сама проблема....

2
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
22.08.2012, 12:58
Цитата Сообщение от Death Посмотреть сообщение
@synthesize varDay;
=> @synthesize varDay = _varDay; // используйте daysArray, varDay - очень плохо. Здесь идет "привязка" к instance переменной _varDay
Затем, к примеру в init методе вашего метода, вызывайте _varDay = [[NSMutableArray alloc] init];
а потом внутри контроллера он может быть виден как _varDay, вне его - это будет <instanceName>.varDay, ибо вы объявили property в интерфейсе.

P.S.
В данном случае Вам вообще лишний массив не нужен. self.varDay = [[NSMutableArray alloc] init];
И все. Проблем нет. Или как я объяснил выше.
Цитата Сообщение от Death Посмотреть сообщение
Дело в том что если я потом пошлю сообщение [_varDay removeAllObjects]; то объекты все удаляться у меня из свойства varDay.
А вы что хотели? Указатели указывают на один и тот же объект.

Добавлено через 3 минуты
Цитата Сообщение от Death Посмотреть сообщение
Дело в том что если я потом пошлю сообщение [_varDay removeAllObjects]; то объекты все удаляться у меня из свойства varDay.
Цитата Сообщение от Death Посмотреть сообщение
На консоле выводит day = (null). Нечего не записалось. Можите объснять в чем проблемма?
Может быть я память не выделил для массива?
Вы не создали объект впринципе.
1
4 / 4 / 0
Регистрация: 18.10.2009
Сообщений: 44
22.08.2012, 14:49  [ТС]
Так, по порядку.
1). Т,е когда я работаю через свойства, у меня не создается объект, а всего лишь определяться какой будет к нему доступ так?
2.) Если я объявил такие типы как NSDictionary, NSString, NSArray и т.д в свойство, я в люблю случае должен для них создать объект например. [NSArray alloc]init];


Цитата Сообщение от zulkis Посмотреть сообщение
В данном случае Вам вообще лишний массив не нужен. self.varDay = [[NSMutableArray alloc] init];
И все. Проблем нет. Или как я объяснил выше.
Я тоже на утро об этом подумал.

Благодарю за помощь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2012, 14:49
Помогаю со студенческими работами здесь

Property класса
Всем доброго дня! Я только начал изучать Objective C по этому прошу сильно не ругать, а как можно более подробно объяснить ответ на...

@interface и @property
Здравствуйте! Объясните пожалуйста, вот я накатал класс: @interface Good : NSObject { int c; } @property int a; ...

@property,@synthesize в Objective-C
Может кто нибудь понятно объяснить, что на самом деле делает @property и зачем @synthesize. Читал wiki и другие сайты, но так и не...

Великие и ужасные @property
Всем привет! Уже второй месяц изучаю разработку под iOS, но все откладывал этот вопрос на потом - т.к., мол, &quot;пока и так...

@property или ivar
Добрый день! Занимаюсь Objective C недавно, и, до сегодняшнего времени, не задавался вышеупомянутым вопросом. В учебниках и статьях...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru