2012-03-18 45 views
0

我不知道为什么这不起作用,我搜索了它并没有发现任何东西。我是Obj c和xcode的新手。如果我在 - (void)setX:(int)x之前添加了一些东西,但是它没有在它自己的地方,那么代码就可以正常工作了......它的构建成功了,但我确实得到了这个“线程1:断点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; 
    } 
} 

好了,所以我就缩进它,所以它会被格式化,以粘贴在这里,当我把它放回它的工作原理...有谁知道发生了什么事?

回答

3

从您的描述中,听起来好像你有一个断点集合。当执行到达该点时,断点进入调试器(带有“线程1:断点3.1”之类的消息)。这是为了您可以检查变量的值,逐步执行代码等。

在Xcode中,断点看起来像一个蓝色标记,箭头指向源代码行,位于代码的左侧边缘。尝试将光标置于该行并从菜单中选择“Product/Debug /在当前行删除断点”(或按⌘\)。

+0

+1为了建立在这个正确的答案上,第二个代码示例没有停止运行的原因是多余的空函数落在行上,断点将'setX:'从断点移开。所以程序执行永远不会使它与断点一致。 – NJones 2012-03-18 04:23:08

+0

是的,这样做更有意义,谢谢你的回应。 – GnarGnar 2012-03-18 05:04:27

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:。 A setX:x组合甚至可以像财产一样使用。

相关问题