Я только начинаю с Obj-C. Однако, поскольку мой фон - Python, я по-прежнему борюсь с несколькими понятиями и синтаксисом. Я уверен, что у ObjC есть механизм для обработки этого (селекторов?), Но я до сих пор не так далеко, и я надеюсь узнать от вас.Назначить объект до его создания (ObjC)
Рассмотрим этот класс:
@interface Drink : NSObject
@property NSString *drinkName;
@property NSDictionary *drinkIngredients;
@property (weak) Drink *similarDrinks;
@end
similarDrinks
Свойство будет ссылка на другой объект того же типа (я планировал сделать список объектов, но решили сохранить его простым, отсюда и множественное число). затем
Мой главный файл содержит этот код:
Drink *margharita = [[Drink alloc] init];
margharita.drinkName = @"Margharita";
margharita.drinkIngredients = @{
@"Fresh Lime Juice" : @22,
@"Contreau" : @30,
@"Blanco Tequila" : @45,
};
Тогда есть несколько объектов, как это и, наконец, создать strawberryMargharita
объект:
Drink *strawberryMargharita = [[Drink alloc] init];
strawberryMargharita.drinkName = @"Strawberry Margharita";
strawberryMargharita.drinkIngredients = @{
@"Fresh Lime Juice" : @20,
@"Contreau" : @30,
@"Blanco Tequila" : @45,
@"Strawberry Puree" : @40
};
strawberryMargharita.similarDrinks = margharita;
Примечания свойства strawberryMargharita.similarDrinks = margharita;
, который работает здесь, потому что это было определенных ранее. Было бы неплохо, если бы объект margharita
мог указать на этот объект ->margharita = strawberryMargharita.similarDrinks;
. Я думаю, что это должно быть возможно, поскольку компилятор ObjC является динамическим?
Также некоторые люди могут указать, что моя структура данных не подходит для этого, может быть, есть и другой и умный способ реализовать это, но я хотел бы знать, как это сделать так, чтобы узнать, как назначить необъявленный объект. Весь проект Xcode находится на Github с main.m
, drink.m
и drink.h
файлами.
«поскольку компилятор ObjC динамичен» - что вы подразумеваете под этим? какой особый «динамизм» нуждается в этом отдельно от другого осмысления («margharita.similarDrinks = strawberryMargharita;')? –
Вы бы сделали это в переопределенном методе '[Drink init '', как и в методе конструктора объектов Python (и почти на каждом языке). – trojanfoe
@TheParamagneticCroissant Я пробовал это, и я получаю «Использование необъявленного идентификатора' strawberryMargharita' – user3056783