我在objective C中声明了一个函数名:
- (void)placeViews:(CGSize)screenSize;
在我的viewDidLoad中我调用了这个函数,我想在调用它时设置一个断点:
[self placeViews:size]
所以在LLDB中我输入以下断点命令:
breakpoint set --selector placeViews:screenSize
但是LLDB无法解决断点
但是,当我只使用“placeViews:”作为选择器时,它会找到选择器并添加断点。 我没有得到的是为什么它在我使用“placeViews:”时找到选择器,但是当我使用整个方法名称“placeViews:screenSize”时它找不到它。 这是为什么? 那么当我有多个方法(例如“placeViews:screenSize:oneMoreThing”)并且我只想在此方法上设置断点时会发生什么,LLDB如何区分“placeViews:screenSize”和“placeViews:screenSize:oneMoreThing” ?
谢谢你!-Malena
答案 0 :(得分:0)
placeViews:screenSize不是选择器名称,选择器只是“placeViews:”。选择器名称不包括传递给该选择器指示的消息的变量名称(在您的情况下为screenSize。)
如果您考虑它,这实际上是有意义的,因为用户在调用方法时必须提供选择器的“placeViews:”部分,但“screenSize”没有他们如何调用它的部分。此外,在@interface中使用screenSize并在@implementation中使用完全不同的名称也不是错误。所以它实际上不应该是运行时为消息提出的名称的一部分。
您可以验证这一点,例如在终端
中运行它$ otool -o | grep placeViews 名称0x100000f56 placeViews:
没有提到screenSize。