2014-11-15 5 views
0

나는 목표 C에서 다음과 같이 함수 이름이 선언이 :LLDB가 전체 선택기 이름을 중단 점으로 인식하지 않는 이유는 무엇입니까?

내가이 함수를 호출하고,이 같은 호출 할 때 내가 중단 점을 데려 가고 싶다는 내있는 viewDidLoad에서
- (void)placeViews:(CGSize)screenSize; 

:

[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

placeViews : 화면 크기가 선택 이름이 아닙니다은 선택은 "placeViews :"입니다. 선택기 이름에는 해당 선택기가 나타내는 메시지 (사용자의 경우 screenSize)에 전달되는 변수 이름이 포함되지 않습니다.

사용자가 "placeViews :"를 제공해야하기 때문에 실제로 생각하면 이해할 수 있습니다. 그들은 메서드를 호출 할 때 선택기의 일부이지만 "screenSize"는 호출하는 방법의 일부가 아닙니다. 또한 @interface의 screenSize와 @implementation의 완전히 다른 이름을 사용하는 것은 오류가 아닙니다. 따라서 런타임에서 메시지를 고려하는 이름의 일부가 아니어야합니다. |

당신은,이를 확인 예를 들어 $ otool -o

터미널

이 실행할 수 있습니다 grep placeViews 이름 0x100000f56 플레이스 :

screenSize에 대한 언급이 없습니다.