2012-03-07 5 views
1

nil에 대한 검사를 추가했지만 문제가 여전히 존재합니다. 버그를 수정하려면 어떻게합니까? 0x0은 nil과 같지 않습니다. 버그를 수정하는 방법

enter image description here

enter image description here

UPDATE

: 나는 몇 가지 코드를 추가했다.

@property (nonatomic, retain) IBOutlet UIButton *btnReader; 
IBOutlet UILabel *_lbReader; 

- (void)dealloc 
{ 
[btnReader release]; 
[super dealloc]; 
} 

업데이트 2 가능한 문제점을 발견했습니다.

- (void)onRotation:(NSNotification *)notification 
{ 
if (btnReader!= nil && _lbReader!=nil) 
{ 
    _lbReader.text = btnReader.titleLabel.text; 
}  
} 

갱신 3 나는 나의의 UIViewController에서 onRotation를 사용합니다.

+1

nil 확인은 실제로 거기에서 중요하지 않습니다. 'btnReader' 나'_lbReader' * 중 하나가 * nil이라면 설정 오류가 발생하지 않습니다. 당신의 문제는 아마 다른 곳에있을 것입니다.더 많은 코드를 보여줄 수 있습니까? – mattjgalloway

+0

'onRotation'메서드가 이상하게 보입니다 (이 클래스는 뷰 컨트롤러입니까?)하지만 코드에 아무런 문제가 보이지 않습니다. 호기심에서, 정적 분석기를 코드에 사용 했습니까 (Xcode 4의 'Product -> Analyze')? 문제를 찾는데 도움이 될 것입니다. –

답변

1

더 많은 코드를 보지 않고는 알 수 없지만 때로는 "이상한"EXC_BAD_ACCESS 코드를 메모리에 쓰지 않아도 오류가 발생할 수 있습니다.

NSLog(@"Error code: %i", [dict objectForKey:@"key"]);

아니, 컴파일러가 경고하지 않았다 예를 들어,이 나에게 두통의 몇 시간을 일으켰습니다. dict는 NSString 객체를 반환하지만 정수로만 쓸 수있는 공간이 있습니다. 그래서 그것은 다른 어떤 대상 위에 쓰는 것을 끝내었다. 오류는 겉으로보기에 무작위 였지만 특정 단계를 정확하게 수행하면 재현 할 수있었습니다. 20k 줄의 코드를 추적하는 것을 싫어했습니다.

코드에 다음과 같은 내용이 있는지 확인하십시오. 낮은 수준의 c 객체 (c- 배열과 같은)를 만들고 있습니까? 코어 - '빈칸 채우기'(예 : 코어 그래픽, 코어 텍스트, 코어 애니메이션)를 사용하고 있습니까? 때로는 하위 수준의 C 객체/메소드를 사용하며 올바르게 사용하지 않으면 다른 객체의 메모리에 쓸 수 있습니다.

마지막으로 위에서 나열한 NSLog와 같은 모든 NSString 형식을 다시 확인하십시오. 모든 자리 표시자가 반환 된 객체/프리미티브와 일치하는지 확인하십시오.

확인해야 할 부분이 더 많지만 그 순간은 내가 생각할 수있는 전부입니다.

0

변수를 nil로 설정하지 않는 한 해당 변수가 nil이 될 수 있습니다.

중단 점을 검사하면 값이 0x020 f.ex임을 알 수 있습니다. 앱이 시작되면 변수를 수동으로 nil로 설정해야합니다.

본인은 계속해서이 문제를 겪고 있습니다.

난 당신이 ARC

사용하는 경우이 적어도 일정 중 하나에서 iOS 5에서 또는 생각

편집 :

나는이 버튼이라고 처음에보고하지 않았다. 그러나보기가 준비되기 전에 수표가 실행 중입니다. 예를 들어, viewDidLoad와 같이 대기열에서이 함수를 나중에 실행해야합니다.

+1

인스턴스 변수는 'nil'으로 초기화됩니다. 수동으로 초기화해야하는 것은 로컬 변수뿐입니다. – Jim

+0

동의합니다. 모든 객체는 nil로 초기화됩니다. 그것들은 아무것도 설정되지 않은 경우 "임의"값을 가질 수있는 기본 요소입니다. –

+0

차이점은 디버그 버전과 릴리스 버전 사이입니다. 디버그에서 모든 iVars/로컬 변수는 초기화되지 않으므로 릴리스에서는 자동으로 생성되지 않으므로 수동으로 수행해야합니다. nl에서 검사하는 _lbReader 콘센트는 어떻습니까? _lbReader에 문제가있을 수 있습니까? –

-1

btnReader가 0이 아니므로 올바르게 작동하는지 확인할 수 있습니다.
btnReader를 할당했지만 초기화하지 않은 것 같습니다.

관련 문제