Когда у вас есть один объект как свойство другого объекта в Objective-C, он автоматически инициализируется при использовании @synthesize
?Объект автоматически инициализируется, если он является синтезируемым свойством другого объекта?
ответ
Вы все еще должны инициализировать. Попробуйте использовать ленивую инициализацию:
-(MyPropertyClass*)propertyName {
if(!propertyIvarName) {
_propertyIvarName = [[MyPropertyClass alloc] init];
}
return propertyIvarName;
}
или инициализировать свойство в viewdidload
Этот шаблон опасен в некоторых сценариях, поскольку свойство никогда не может быть установлено на ноль. –
Это также может привести к проблемам, если свойство вызывается из нескольких потоков. –
'viewDidLoad' не применяется к вещам, которые не являются представлениями ... – Dave
№ машины @synthesize не знает, как инициализировать его. Простой -init
?
Вы можете выделить и инициализировать его в -init…
ссылочного объекта.
Автоматически инициализируется при использовании
@synthesize
?
Да, он инициализируется nil
(не реальный объект не выделяется, однако - это инициализация указателя в смысле C слова, метод init
является не называется).
Кстати, вы не должны даже @synthesize
добиться такого поведения - все переменные экземпляра, даже те, которые не имеют соответствующего @property
, автоматически инициализируются либо nil
(в случае объектов), NULL
(в случае других указателей) или 0
(в случае целых чисел и чисел с плавающей запятой) по времени выполнения Objective-C.
Давайте попробуем:
@interface TypicalObject : NSObject
@property (nonatomic) NSNumber *numberProperty;
@end
@implementation TypicalObject
@synthesize numberProperty;
@end
...
TypicalObject *object = [[TypicalObject alloc] init];
NSLog(@"object.numberProperty = %@", object.numberProperty);
Урожайность заявление журнала:
object.numberProperty = (null)
Таким образом, нет, свойства не автоматически Instantiate. Однако все переменные экземпляра объекта начинаются с nil
.
- 1. Получить тип объекта, который является свойством другого объекта
- 2. Entity Framework, удалить объект, если он отделен от другого объекта
- 3. Определить объект, если он полностью внутри другого объекта JavaScript
- 4. Выберите String, который не является свойством другого объекта
- 5. Найти, если объект является подмножеством другого объекта в javascript
- 6. Android sqllite, запрашивающий объект, являющийся свойством другого объекта
- 7. Объект с свойством объекта другого в качестве ключа
- 8. Элемент инициализации автоматически инициализируется NULL
- 9. Config Automapper игнорировать тип, если он является внутренним свойством, но не внутренним свойством.
- 10. Тестирование, если объект зависит от другого объекта
- 11. Как я могу обрабатывать вызовы методов для объекта, который является частным свойством другого объекта?
- 12. тип схемы данных, если «имя» объекта является ключом или свойством
- 13. Является ли триггер событий синтезируемым в verilog?
- 14. Как указать внешний ключ для отношения «много-к-одному», если он не является свойством самого объекта?
- 15. Является ли $ readmem синтезируемым в Verilog?
- 16. Является ли rising_edge в VHDL синтезируемым
- 17. Номер. [Свойство] является свойством объекта или конструктора?
- 18. дочерний объект инициализируется родительского
- 19. Как слить наблюдаемое, которое является свойством другого наблюдаемого
- 20. объект экземпляр другого объекта?
- 21. InitWithFrame не выполняется, если view является свойством
- 22. Определить, если свойство является автоматическим свойством
- 23. Есть ли способ узнать, когда объект инициализируется?
- 24. Почему объявить AngularJs на дне, если он инициализируется в DOMContentLoaded
- 25. Как получить доступ к статическим свойствам объекта, который сам по себе является свойством другого объекта?
- 26. Как мы можем активировать (по требованию) объект, являющийся свойством другого объекта?
- 27. Проверьте, является ли объект Enum последовательным после другого объекта Enum?
- 28. Как убедиться, что объект класса автоматически настроен с помощью загрузки Spring, если он является контроллером Rest
- 29. Проверьте, если объект HTML находится внутри другого HTML объекта
- 30. сериализовать объект dotnet для json как jproperty, где ключ является свойством объекта и значением всего объекта
Ваш объект должен быть сохранен как указатель, который будет инициализирован на 'nil' – Dave