我刚刚开始使用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