2013-02-26 33 views
0

好吧,我可能沒有試圖學習OOP的業務,而且我遇到了最簡單的第一個程序問題。我收到一條消息,說我的實現不完整(我評論了下面給出4個錯誤的那一行)。哪裏不對?它需要一個類型說明符,但不要將它與NSString一起使用?我注意到NSString在實現中不會像在界面中那樣將顏色更改爲XCODE中的綠色類型。不要笑,但我到底失去了什麼?

此外,爲什麼我們需要在接口中聲明方法並在實現中輸入完全相同的東西?也就是說,爲什麼需要在兩者中輸入startDrinking:(NSString *)newBeverage?

#import <Foundation/Foundation.h> 


@interface Drinks : NSObject { 
    NSString *beverage; 
} 

- (void) startDrinking: (NSString*) newBeverage; // setter 
- (void) printDrink; 

@end 


@implementation Drinks 
{ 

//THIS NEXT LINE IS WHERE I GET 4 ERRORS 
    - (void) startDrinking: (NSString *) newBeverage { 
     beverage = [[NSString alloc]initwithString:newBeverage] 
     } 


    -(void) printDrink { 

       NSLog(@"How is your", beverage); 
      } 

     } 

@end 


int main (int argc, const char * argv[]) { 


    Drinks *beverage = [[Drinks alloc] init]; 

    [beverage startDrinking:@"Lemonade"]; 

    return 0; 
} 
+1

你得到的錯誤是什麼? – 2013-02-26 03:07:34

回答

0

你的問題太囉嗦。

你錯過了排隊分號beverage = [[NSString alloc]initwithString:newBeverage]

行應該是:

beverage = newBeverage; 

和NSLog的行應該是:

NSLog(@"How is your %@", beverage); 

和方法的聲明標題中的簽名,後面跟着C和C++。您可以想到,編譯器需要知道哪些函數首先可用。

+0

感謝您的回覆。對不起,這是我的第一篇文章。我沒有看到分號究竟應該在哪一行。我試着把一個無處不在,仍然得到類型說明符丟失,在申報結束時需要 – 2013-02-26 03:15:46

+0

更新了答案。你遇到什麼錯誤? – Raptor 2013-02-26 03:24:03

+0

我確實在所顯示的位置添加了分號,但仍然出現相同的4個錯誤。 – 2013-02-26 04:17:33

0

您的錯誤是{正下方@implementation Drinks。 這就是爲什麼對齊也被搞砸了。

一般來說,如果您無法找到線路上的錯誤報告,只需檢查任何無關或缺失的括號,括號或大括號。 奇怪的對齊是另一個線索。

希望這會有所幫助。另外,就像其他人所說的,如果你的主題更有意義,它會有所幫助。不僅僅是爲了你自己,也爲了其他可能有類似問題的人

相關問題