LLDB의 교묘한 음란물
이것은 많은 사람들이 할 수 있을 거라고 믿는다. 타면 타다
recursiveDescription
용법은 대략 다음과 같다1
2
3
po [self.view recursiveDescription]
po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]
Expression 대법
이 Blog은 기본적으로 이 명령을 둘러싸고 전개될 것이다. 이 명령은 신기한 명령이다.본인은 재능이 부족하고 학문이 얕기 때문에, 이 명령을 어떻게 소개해야 할지 모르니, 한마디로 말하자면, 그의 기능은 표현식을 집행하는 것이다.
이 명령을 사용하면 기본적으로 꽃을 피울 수 있고 일반적인 방법 함수는 모두 LLDB에서 호출할 수 있다.
UI 스타일 업데이트
먼저 저는 Xcode가 자체로 가지고 있는
Debug View Hierarchy
기능을 사용하는 것을 좋아하기 때문에 이 Debud 과정에서 UI를 어떻게 동적으로 수정하는지 말씀드리겠습니다.간단하게 설명하자면, 대상 가져오기 -> 대상 호출 방법 (스타일 변경) -> 렌더링
Object inspector
를 보십시오. 여기에서 Address
속성을 볼 수 있습니다. 이것을 절반으로 성공했습니다. 다음은 코딩입니다.여기에 이것Address
이 0x7fcef0c19290
e (void)[0x7fcef0c19290 setBackgroundColor:[UIColor blueColor]]
.이것 은 비교적 자유롭고 직접적 인 필법 으로 한 걸음 한 걸음 쓸 수도 있다1
2
3
4
5
e UIView * $myView = (UIView *)0x7fcef0c19290
e $myView.backgroundColor = [UIColor yellowColor]
// ,
//e (void)[$myView setBackgroundColor:[UIColor yellowColor]]
e (void)[CATransaction flush]
방방, 배경색이 바뀐 거 보이죠? 구속 강제 새로 고침
그래서 저는 제가 노는 악취미, 배경색 등 기본적인 스타일을 바꿀 수 있다는 것에 만족하지 않고 제약을 바꿔서 놀고 싶습니다.
우선 천진해서
Masonry
코드를 직접 넣었어요.1
2
3
LLDB span>
e (void)[$view mas_updateConstraints:^(MASConstraintMaker *make) {
make.height.equalTo(@20);
}];
LLDB
나에게 unrecognize、undefined
같은 정보를 타당하게 알려주었다.그래, 난 원생의 구속법으로 하면 되겠지.
1
e NSLayoutConstraint * $constraint = [NSLayoutConstraint constraintWithItem:$view attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeHeight multiplier:1.0f constant:100.0f]
결과
LLDB
는 내가 모른다고 말했다NSLayoutAttributeHeight、NSLayoutRelationEqual
. 나는 차오야. 그래, 네가 가로로 할게. 나는 매거에 대응하는 수치를 찾아냈다.1
e NSLayoutConstraint* $constraint = [NSLayoutConstraint constraintWithItem:$test attribute:8 relatedBy:0 toItem:nil attribute:8 multiplier:1 constant:80.0f]
ok, 이 구속 변수는 드디어 생성되었다. 쉽지 않다. 그 다음에 구속을 가했다.
1
e (void)[$view addConstraint:$constraint]
그래, 덧붙였어. 그런데 타당한 구속 충돌이야. 원래 고도의 구속이 있었잖아. 그래서 원래의 구속 목록을 계속 얻고 새 변수는 원래의 구속을 가리키며 삭제하고 끝내자.
1
2
3
4
po [$view constraints]
e NSLayoutConstraint* $oldConstraint = (NSLayoutConstraint*)0x6080000b34a0
e (void)[$test removeConstraint:$oldConstraint]
e (void)[CATransaction flush]
그리고 새로운 제약을 가리키는 지침을 통해 즐겁게 바꿀 수 있다
constant
1
2
e $constraint.constant = 20
e (void)[CATransaction flush]
물론 당신이 제약만 수정하려고 한다면 새로운 변수에서
[$view constraints]
의 어떤 제약을 가리키고 유쾌하게 수정할 수 있다. 이렇게 번거롭게 원래의 것을 삭제하고 새로운 것을 만들고 새로운 제약을 추가할 필요가 없다. 그야말로
나무라다이 코드 힌트는 거의 지원되지 않는데, 내가 사용하는 방식이 틀린 거야???
인용하다
ObjC 중국
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.