1

Objective-c プログラミングを学習していますが、解決できないエラーが 2 つあります。何が悪いのか教えていただけますか?

#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
4

2 に答える 2

2

行頭に変な文字や文字があるよう-(void) add: (Fraction *) f;です。インターフェイス セクションを Xcode に貼り付けると、.h ファイルと同じエラーが発生します。その行を削除して再入力すると、エラーは消えます。

于 2012-08-05T13:51:32.027 に答える
2
  1. App Store から TextWrangler を入手

  2. 問題のある .h ファイルを開きます

  3. 選択するText -> Zap Gremlins...

  4. 「●で置換」にチェックを入れる

  5. 【ザップ!

...

 -(double) convertToNum;
 ••••••••••••••••••••••••••••••••••••••-(void) add: (Fraction *) f; 
 -(void) reduce; /*error 2: Expected identifier or '(' */

...

そこにあなたの問題があります!


フィリップはおそらく正しいでしょう。そして、それは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:

前後のラインもチェック。フィリップは、列の冒頭にファンキーなキャラクターを見たと言いましたadd:. また、Xcode には「隠し文字を表示する」機能があります。それは役立つかもしれませんが、私の経験では、悪い改行は見えません。

于 2012-08-05T13:56:33.047 に答える