내 코드에서 이상한 버그가 발견되었지만 원할 때마다 재현 할 수 없습니다. 때때로 다음과 같은 키 패스 오류 내 아이 패드 응용 프로그램 충돌 : 나는 그것을 연결할 경우 여기ios : observeValueForKeyPath 이후의 충돌
-(void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (object != textViewCurrentlyEditing)
return;
NSLog(@"Keypath %@ changed", keyPath);
UITextView *tv = object;
UIObject *selected = (__bridge UIObject *)context;
[self updateTextViewAlign:tv forObject:selected];
}
과 : 여기
Keypath contentSize changed
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '<UIWebDocumentView: 0x1c9fce00; frame = (0 0; 1034 75); text = 'coucou'; opaque = NO; userInteractionEnabled = NO; layer = <UIWebLayer: 0x1daa9760>>: An -observeValueForKeyPath:ofObject:change:context: message was received but not handled.
Key path: contentSize
Observed object: <UITextView: 0x1da83e60; frame = (32 32; 1034 198); text = 'coucou'; layer = <CALayer: 0x1dad2650>; contentOffset: {0, -62}>
Change: {
kind = 1;
new = "NSSize: {1034, 75}";
}
는 키 패스 관찰을 처리하는 코드는
UITextView *tv = [[UITextView alloc] initWithFrame:button.frame];
[tv addObserver:self forKeyPath:@"contentSize" options:(NSKeyValueObservingOptionNew) context:(void *)selected];
textViewCurrentlyEditing = tv;
'선택됨'은 UIObject 유형입니다.
내 코드에서 UIWebLayer를 사용하지 않습니다. UITextView에서 UIWebLayer에 대한 objet 변이가있는 이유는 무엇입니까? 나는 무엇을 짜내고 있습니까?
dealloc에서 textview 등록을 잊어 버리셨습니까? – borrrden
ARC를 사용하면서 textview가 실제로 등록 해제되지 않았습니다. 더 이상 필요가 없으면 다음과 같이하면됩니다. [tv removeFromSuperview]; tv = nil; 인 스트 루먼트는 좀비를 감지하지 못했지만 이상한 텍스트 뷰가 여전히 어딘가에 있다면 아직 좀비가 아닙니다. – Diwann