我剛剛開始使用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