Objective c “分数”没有可见的@interface声明选择器“add:”

Objective c “分数”没有可见的@interface声明选择器“add:”,objective-c,interface,identifier,Objective C,Interface,Identifier,我正在学习Objective-c编程,有两个错误我无法解决。你能告诉我怎么了吗 #import "Fraction.h" int main (int argc, char * argv[]) { @autoreleasepool { Fraction *aFraction = [[Fraction alloc] init]; Fraction *bFraction = [[Fraction alloc] init]; [aFraction setTo: 1 over: 4

我正在学习Objective-c编程,有两个错误我无法解决。你能告诉我怎么了吗

#import "Fraction.h"
int main (int argc, char * argv[]) {
@autoreleasepool {
    Fraction *aFraction = [[Fraction alloc] init];
    Fraction *bFraction = [[Fraction alloc] init];
    [aFraction setTo: 1 over: 4];
    [bFraction setTo: 1 over: 2];
    [aFraction print];
    NSLog (@"+");
    [bFraction print];
    NSLog (@"=");
    [aFraction add: bFraction]; /*error 1: No visible @interface for 'Fraction' declares the    selector 'add:'*/
    [aFraction reduce];
    [aFraction print]; }
return 0; }


#import <Foundation/Foundation.h>
@interface Fraction : NSObject
@property int numerator, denominator;
-(void) print;
-(void) setTo: (int) n over: (int) d;
-(double) convertToNum;
-(void) add: (Fraction *) f; 
-(void) reduce; /*error 2: Expected identifier or '(' */
@end

在-void add的开头似乎有一些奇怪的字符:分数*f;线如果我将您的接口部分粘贴到Xcode中,我会得到与您在.h文件中相同的错误。如果我删除该行并重新键入,错误就会消失。

在-void add:Fraction*f;线如果我将您的接口部分粘贴到Xcode中,我会得到与您在.h文件中相同的错误。如果我删除该行并重新键入,错误就会消失

抓住

打开有问题的.h文件

选择文本->消灭小精灵

检查替换为•

[ZAP!]

这就是你的问题

菲利普很可能是对的。我打赌这是一个ctrl+return。试试这个:

转到声明reduce:方法的行的末尾,然后按ctrl+a

光标可能会跳回声明add:的行的开头。如果在行尾按ctrl+return,则会发生这种情况

要修复此问题,请使用reduce:,转到行的开头,单击backspace,然后单击return

例如:

-(void) add: (Fraction *) f; 
-(void) reduce; <*** cursor here, hit ctrl-a
按ctrl-a后,光标将位于声明add:的行的开头。这意味着您在add:行的末尾有一个错误的返回字符

检查前后的线路。Philip说他在add:line的开头看到了时髦的角色。此外,Xcode还具有显示隐藏字符的功能。这可能会有所帮助,但根据我的经验,糟糕的新词是看不见的

抓住

打开有问题的.h文件

选择文本->消灭小精灵

检查替换为•

[ZAP!]

这就是你的问题

菲利普很可能是对的。我打赌这是一个ctrl+return。试试这个:

转到声明reduce:方法的行的末尾,然后按ctrl+a

光标可能会跳回声明add:的行的开头。如果在行尾按ctrl+return,则会发生这种情况

要修复此问题,请使用reduce:,转到行的开头,单击backspace,然后单击return

例如:

-(void) add: (Fraction *) f; 
-(void) reduce; <*** cursor here, hit ctrl-a
按ctrl-a后,光标将位于声明add:的行的开头。这意味着您在add:行的末尾有一个错误的返回字符



检查前后的线路。Philip说他在add:line的开头看到了时髦的角色。此外,Xcode还具有显示隐藏字符的功能。这可能会有所帮助,但根据我的经验,不好的换行符是看不见的。

这些文件中还有其他代码吗?也许是定义什么的?是的,分数.m没有发布,因为没有错误。需要我发布吗?这些文件中还有其他代码吗?也许是定义什么的?是的,分数.m没有发布,因为没有错误。需要我发布吗?我从Stephen G.Kochan的《Objective-C第四版编程》一书中复制了代码。对……我不是说代码有什么问题,只是你可能在键入时意外地碰到了一些错误的组合键。谢谢,Mills。也许我的复制过程有问题。我复制了斯蒂芬·G·科昌(Stephen G.Kochan)的《Objective-C第四版中的编程》一书中的代码。对……我不是说代码有什么问题,只是你可能在键入时意外地碰到了一些错误的组合键。谢谢,米尔斯。也许我的复制过程有问题。是的,我按了键,光标跳到了开头。我点击backspace,然后按你说的返回。但是错误依然存在。谢谢你们两位,bbum和大卫。你们确定你们去掉了这个错误的角色吗?当它跳到行的开头时,你需要将光标向下移动一行,退格,然后返回。当我按ctrl+a时,光标不是跳到add:line的开头,而是reduce:line的开头..问题仍然是..Nuts-不同的问题。正如菲利普所说,这仍然是一个看不见的角色。非常感谢你的耐心和你推荐的TextWrangler,很酷:,bbum。在add之前确实有一行•:。当我删除它们时,错误仍然存在。我想我在其他地方的操作可能有问题,最好从一开始就重新键入整个代码。我会试试看它是否有效。是的,我按了键,光标跳到了开头。我点击backspace,然后按你说的返回。但是错误依然存在。谢谢你们两位,bbum和大卫。你们确定你们去掉了这个错误的角色吗?当光标跳到行的开头时,您希望将光标向下移动一行,ba
我刚才试了一下。当我按ctrl+a时,光标不是跳到add:line的开头,而是reduce:line的开头..问题仍然是..Nuts-不同的问题。正如菲利普所说,这仍然是一个看不见的角色。非常感谢你的耐心和你推荐的TextWrangler,很酷:,bbum。在add之前确实有一行•:。当我删除它们时,错误仍然存在。我想我在其他地方的操作可能有问题,最好从一开始就重新键入整个代码。我会试试看是否有效。