2011-02-04 4 views
1

locationForURL1이라는 NSString이 있습니다. UITextView로 이어지는 코드를 통해 추적했는데 어느 시점에서도 변경되지 않았습니다. 나는 NSLog를 UIAlertView의 'show'라인 바로 앞에 놓았고, 심지어 locationForURL1은 URL과 동등한 것으로 간주됩니다.alertView clickedButtonAtIndex 문제 : 변수를 언급 할 때 충돌이 발생합니다. 대체?

사용자가 alertview에서 버튼을 클릭하면 바로 clickedButtonAtIndex : 부분으로 이동합니다.

다음은 거기에서 코드입니다 :

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
    NSLog(@"location for url1b %@", locationForURL1); 
    if ((alertView.tag <= 3) && (alertView.tag >= 1)) { 
     if (buttonIndex == 1) { 
      NSLog(@"location for url1 %@", locationForURL1); 

그것도 2 NSLog로하지 않습니다, 그것은 처음에 충돌합니다. 나는이 NSLogs를 단순히 'test'라고 말한 것으로 바꾸었기 때문에 그것 때문에 일어나는 일이라는 것을 알고 있습니다.

이 문제를 어떻게 해결할 수 있습니까? locationForURL1에 대한 언급만으로 갑자기 충돌하는 것입니다.

UIAlertView에 대한 대안이 있습니까? 아마도 비슷하지만 더 나은 것을 만드는 오픈 소스 프로젝트일까요? 과거의 경험에 비추어 볼 때 매우 감동적인 것 같습니다.

+2

아마도 locationForURL1은 어느 시점에 먼저 출시되었을 것입니다. 끈을 묶어? –

+0

UIAlertView에서 충돌을 비난하는 것은 실수입니다. 제 경험상 그것은 항상 제 잘못입니다. 사실 당신의 버그는 제 잘못이 될 수도 있습니다. Marco와 동의합니다. locationForURL1의 메모리 관리를 확인하십시오. – RedBlueThing

+0

@Marco Mustapic 이것은 아마도 100 %입니다. =) – Max

답변

0

NSString이 ivar 인 것처럼 보입니다 ... 액터가 비 원자로 설정되어 있습니까? 세터에게 전화하고 있니? (당신은 ... 둘 다해야합니다)

0

다른 곳에서는 locationForURL1=aURL 대신 self.locationForURL1=aURL을 사용해야합니다. UIAlertView는 크래시와 아무 관련이 없습니다.

+0

방금 ​​해봤습니다. 아무런 차이가 없지만 여전히 같은 지점에서 충돌합니다. – Andrew

+0

Xcode의 실행 파일 관리자에서 NSZombieEnabled 환경 변수를 YES로 설정하십시오. 그러면 과도하게 풀린 물건을 찾는 데 도움이 될 것입니다. – Costique

+0

이것이 내가 얻는 것입니다 :'*** - [CFString respondsToSelector :] : 해제 된 인스턴스 0x479a250에 메시지가 전송되었습니다. 그게 무슨 뜻입니까? – Andrew

관련 문제