2012-03-18 20 views
0

なぜこれがうまくいかないのかわかりません、私はそれをgoogledして何も見つかりませんでした。私はObj cとxcodeを初めて使っています。コードは、 - (void)setX:(int)xの前に何かを追加してもうまく動作しますが、それが自分自身にあるときはそうではありません...それは正常にビルドされますが、 "Thread 1:breakpoint 3.1"実装の行はsetXであった。これはなぜ動作しないのですか?

// Program to work with fractions – class version 
#import <Foundation/Foundation.h> 
//---- @interface section ---- 
@interface XYPoint: NSObject 

-(void) setX: (int) x; 
-(void) setY: (int) y; 
-(int) getX; 
-(int) getY; 

@end 

//---- @implementation section ---- 
@implementation XYPoint 
{ 
    int xpoint; 
    int ypoint; 
} 

-(void) setX: (int) x 
{ 
    xpoint = x; 
} 

-(void) setY: (int) y 
{ 
    ypoint = y; 
} 

-(int) getX 
{ 
    return xpoint; 
} 

-(int) getY 
{ 
    return ypoint; 
} 
@end 

//---- program section ---- 
int main (int argc, char * argv[]) 
{ 
    @autoreleasepool 
    { 
     XYPoint *point = [[XYPoint alloc] init]; 
     [point setX: 4]; 
     [point setY: 3]; 
     NSLog(@"The points are: %i, %i", [point getX], [point getY]); 

    return 0; 
    } 
} 

これは動作しませんが、これはありません:ここに貼り付けることでフォーマットされるだろうと私は戻ってそれを置くとき、それは動作しますので...誰もい

// Program to work with fractions – class version 
#import <Foundation/Foundation.h> 
//---- @interface section ---- 
@interface XYPoint: NSObject 

-(void) setX: (int) x; 
-(void) setY: (int) y; 
-(int) getX; 
-(int) getY; 

@end 

//---- @implementation section ---- 
@implementation XYPoint 
{ 
    int xpoint; 
    int ypoint; 
} 
-(void) crap: (int) thing {} 
-(void) setX: (int) x 
{ 
    xpoint = x; 
} 

-(void) setY: (int) y 
{ 
    ypoint = y; 
} 

-(int) getX 
{ 
    return xpoint; 
} 

-(int) getY 
{ 
    return ypoint; 
} 
@end 

//---- program section ---- 
int main (int argc, char * argv[]) 
{ 
    @autoreleasepool 
    { 
     XYPoint *point = [[XYPoint alloc] init]; 
     [point setX: 4]; 
     [point setY: 3]; 
     NSLog(@"The points are: %i, %i", [point getX], [point getY]); 

    return 0; 
    } 
} 

[OK]をので、私はそれをインデント何が起こっているのか知っている?

答えて

3

説明から、ブレークポイントが設定されているようです。実行がそのポイントに達すると、ブレークポイントはデバッガにブレークします(「スレッド1:ブレークポイント3.1」のようなメッセージが表示されます)。これは、変数の値、ステップスルーコードなどを確認できるようにするためです。

Xcodeでは、ブレークポイントは青いタグのように、コードの左端にあるソース行を指す矢印で表示されます。その行にカーソルを置き、メニューから "Product/Debug/Remove breakpoint from Current"を選択するか、⌘¥を押してください。

+0

+1この正解に基づいて、2番目のコード例が停止せずに実行される理由は、余分な空の関数が、ブレークポイントを 'setX: 'をブレークポイントから動かして行に落ちるということです。したがって、プログラムの実行は、ブレークポイントの行に決して行かない。 – NJones

+0

これはもっと意味があります、このような迅速な対応に感謝します。 – GnarGnar

1

次の操作を行います。

@interface XYPoint: NSObject 
{ 
    int xpoint; 
    int ypoint; 
} 

- (void) setX: (int) x; 
- (void) setY: (int) y; 
- (int) getX; 
- (int) getY; 

@end 

//---- @implementation section ---- 
@implementation XYPoint 

etc... 

インスタンス変数が@interfaceセクションで宣言されています。今それは動作するはずです。 Objective-Cでは、getXsetX:を使用せず、代わりにパラメータなしのxsetX:を使用することに注意してください。 setX:xの組み合わせは、プロパティのように使用することもできます。

関連する問題