2015-07-21 113 views
0

我目前正在嘗試學習Objective C,並通過這種方式,面向對象的語言。功能和OOP返回

我從我寫的類聲明瞭變量,但是,我的函數太長了,我想要關閉這些代碼。

我不知道返回如何與類一起工作,這是我的問題。

Grapejuice *juice; 
    juice = [[Grapejuice alloc] init]; 
    [juice setName:@"Grape juice"]; 
    [juice setOrderNumber:1000]; 
    [juice setPrice:1.79]; 

這是在我做的這幾個對象主要的一部分,我怎麼能做到這一點在單獨的功能,並且還得到了這些信息這一新功能的重新使用以後(例如打印)? 不知道我是否清楚,但我昨天剛剛開始學習,仍然在基礎上猶豫不決。

感謝兄弟們。

+0

'Grapejuice * make_juice(){return [[Grapejuice alloc] init]; }'? –

+0

關鍵是要將我給你的整個代碼切割成一個分離的函數,而不僅僅是初始化行 – Xcrowzz

+0

是的,我明白了。我認爲上面的例子已經足夠了,但由於它顯然不是,我似乎必須說明整件事情:'Grapejuice * make_juice(){Grapejuice * juice = [[Grapejuice alloc] init]; [juice setPrice:1.79];/*等* /返回果汁; }' –

回答

2

如果我理解正確,我相信你想要的是你的Grapejuice類的自定義「init」方法。

在Grapejuice.h,添加:

- (instancetype)initWithName:(NSString *)name orderNumber:(NSInteger)number price:(double)price; 

在Grapejuice.m,添加:

- (instancetype)initWithName:(NSString *)name orderNumber:(NSInteger)number price:(double)price { 
    self = [super init]; 
    if (self) { 
     _name = name; 
     _orderNumber = number; 
     _price = price; 
    } 

    return self; 
} 

然後使用你這樣做代碼:

Grapejuice *juice = [[Grapejuice alloc] initWithName:@"Grape Juice" orderNumber:1000 price:1.79]; 

請注意,您可能需要調整orderNumberprice參數的數據類型。我只是猜測。根據您爲Grapejuice類中的相應屬性指定的類型適當地調整它們。

+0

我今天回來說我做了一個自定義的init,它的工作原理很完美,昨天就明白了。謝謝你的幫助 ! 只是一件事,爲什麼我會使用NSInteger而不是標準的int? – Xcrowzz