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;
}
4

2 回答 2

0

你的错误是{右下方@implementation Drinks。这就是对齐方式也混乱的原因。

一般来说,如果您在报告的行上找不到错误,只需检查任何多余或缺少的括号、括号或大括号。奇怪的排列是另一个线索。

希望这可以帮助。此外,正如其他人所说,如果您的主题更有意义,它会有所帮助。不仅为您自己,也为任何可能遇到类似问题的其他人

于 2013-02-26T13:12:48.620 回答
0

你的问题太啰嗦了。

你错过了一个分号beverage = [[NSString alloc]initwithString:newBeverage]

该行应该是:

beverage = newBeverage;

并且 NSLog 行应该是:

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

对于 header 中方法签名的声明,后面是 C 和 C++ 。你可以想到,Compiler 需要先知道哪些函数是可用的。

于 2013-02-26T03:06:49.540 回答