Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 是否可以在对象实例中的断点上停止?_Objective C_Xcode_Oop - Fatal编程技术网

Objective c 是否可以在对象实例中的断点上停止?

Objective c 是否可以在对象实例中的断点上停止?,objective-c,xcode,oop,Objective C,Xcode,Oop,我尝试在类定义中创建一个断点,在发送到对象实例的消息上停止,希望它能跳转到类代码,并允许我逐行遍历并查看局部变量的值 然而,我要冒险说“不,这不可能”,因为内存中可能有多个类实例。如果有人能给出更好的解释,那就太好了 (作为旁注,我的替代方案是过度记录运行时数据。)假设您正在谈论这样的事情: - (void)eatAPieceOfFruit: (NSFruit *)fruit { NSString * fruitType = [fruit species]; BOOL hasSe

我尝试在类定义中创建一个断点,在发送到对象实例的消息上停止,希望它能跳转到类代码,并允许我逐行遍历并查看局部变量的值

然而,我要冒险说“不,这不可能”,因为内存中可能有多个类实例。如果有人能给出更好的解释,那就太好了


(作为旁注,我的替代方案是过度记录运行时数据。)

假设您正在谈论这样的事情:

- (void)eatAPieceOfFruit: (NSFruit *)fruit {
    NSString * fruitType = [fruit species];
    BOOL hasSeeds = [fruit hasSeeds];

    NSInteger deliciousnessRating = [self enjoymentOfFruitType: fruitType];
    NSString * reactionToEating = [self phraseForFruitType: fruitType];

    // Breakpoint set here

}
调试器可以访问并知道作用域中任何变量的名称——任何可以在中断行的实际代码中使用的变量,也可以通过调试器访问。因此,在调试器提示下,键入:

po reactionToEating
(即“打印对象”的“po”)或任何其他局部变量的名称,以查看它是什么。如果要对作用域中的对象调用方法,可以执行以下操作:

print (int)[reactionToEating length]
po [reactionToEating capitalizedString]

假设你在谈论这样的事情:

- (void)eatAPieceOfFruit: (NSFruit *)fruit {
    NSString * fruitType = [fruit species];
    BOOL hasSeeds = [fruit hasSeeds];

    NSInteger deliciousnessRating = [self enjoymentOfFruitType: fruitType];
    NSString * reactionToEating = [self phraseForFruitType: fruitType];

    // Breakpoint set here

}
调试器可以访问并知道作用域中任何变量的名称——任何可以在中断行的实际代码中使用的变量,也可以通过调试器访问。因此,在调试器提示下,键入:

po reactionToEating
(即“打印对象”的“po”)或任何其他局部变量的名称,以查看它是什么。如果要对作用域中的对象调用方法,可以执行以下操作:

print (int)[reactionToEating length]
po [reactionToEating capitalizedString]

我想你是想打断发送到特定实例的消息


阅读关于断点和观察点的Xcode文档。基本上,您可以在断点上设置一个条件,以便在self不是您感兴趣的实例时,断点将自动继续。

我想您希望在向特定实例发送消息时中断吗


阅读关于断点和观察点的Xcode文档。基本上,您可以在断点上设置一个条件,以便在self不是您感兴趣的实例时,断点将自动继续。

是的,这是可能的!可以向断点添加条件:

当条件满足时,程序将仅在此断点处暂停。您可以选择一个条件,例如
self==\u myGlobalInstanceOfInterest


如果不想将实例存储在变量中,例如,可以在没有条件的情况下启动断点,然后在确定程序运行时需要哪个实例时,使用
p myObject
获取地址,然后设置条件以使用该地址(例如
self==0x8badf00d
)。

是的,这是可能的!您可以向断点添加条件:

当条件满足时,程序将仅在此断点处暂停。您可以选择一个条件,例如
self==\u myGlobalInstanceOfInterest

如果不想将实例存储在变量中,例如,可以在没有条件的情况下启动断点,然后在确定程序运行时需要哪个实例时,使用
p myObject
获取地址,然后设置条件以使用该地址(例如
self==0x8badf00d