好吧,我可能没有尝试学习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;
}
答案 0 :(得分:0)
你的问题太乱了。
你错过了beverage = [[NSString alloc]initwithString:newBeverage]
该行应为:
beverage = newBeverage;
和NSLog行应该是:
NSLog(@"How is your %@", beverage);
并且对于头部中方法签名的声明,后面跟着C和C ++。您可以想到,编译器需要首先了解哪些功能可用。
答案 1 :(得分:0)
您的错误是{
@implementation Drinks
以下{{1}}。
这就是为什么对齐也搞砸了。
通常,如果您在报告的行上找不到错误,只需检查任何无关或缺少的括号,括号或大括号。 奇怪的对齐是另一个线索。
希望这会有所帮助。此外,正如其他人所说,如果你的主题更有意义,它会有所帮助。不仅适合自己,也适用于可能遇到类似问题的其他人