不要笑,但我到底是什么?

时间:2013-02-26 03:04:01

标签: nsstring

好吧,我可能没有尝试学习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;
}

2 个答案:

答案 0 :(得分:0)

你的问题太乱了。

你错过了beverage = [[NSString alloc]initwithString:newBeverage]

行中的分号

该行应为:

beverage = newBeverage;

和NSLog行应该是:

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

并且对于头部中方法签名的声明,后面跟着C和C ++。您可以想到,编译器需要首先了解哪些功能可用。

答案 1 :(得分:0)

您的错误是{ @implementation Drinks以下{{1}}。 这就是为什么对齐也搞砸了。

通常,如果您在报告的行上找不到错误,只需检查任何无关或缺少的括号,括号或大括号。 奇怪的对齐是另一个线索。

希望这会有所帮助。此外,正如其他人所说,如果你的主题更有意义,它会有所帮助。不仅适合自己,也适用于可能遇到类似问题的其他人