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
)