2012-09-13 7 views
0

모든 항목을 입력 한 후에 버튼을 스크램블하는 핀 패드 클래스가 있습니다. 이 클래스는 개별 프로젝트로 완벽하게 작동하지만 특정 프로젝트에 추가 할 때 [__NSCFSet stringByAppendingFormat:]: unrecognized selector sent to instance 메시지가 표시됩니다. I 상단 _pinpadNumber = _pinpadNumber 라인 주석 경우[__NSCFSet stringByAppendingFormat :] : 인스턴스로 전송 된 인식 할 수없는 선택자

-(void)touchedButtonInCell:(id)sender 
{ 
    // Obtain the current number string entered from the pinpad. 
    _pinpadNumber = [_pinpadNumber stringByAppendingFormat:@"%i", [sender tag]]; 

    // Verification of values 
    NSLog(@"%i", [sender tag]); 
    NSLog(@"%@", _pinpadNumber); 

    // Check the entry of the PINPAD_NUMBER_LENGTH character/number 
    if ([_pinpadNumber length] >= PINPAD_NUMBER_LENGTH) 
    { 
     // Trigger delegate method to handle the pin pad number received. 
     if ([_delegate respondsToSelector:@selector(receivedPinPadNumber:)]) 
     { 
      [_delegate receivedPinPadNumber:_pinpadNumber]; 
     } 
     // Reset the contents of the pin pad number string 
     _pinpadNumber = @""; 
    } 

    // Ensure all elements are scrambled for next number entry. 
    [self scramblePinpadGridView]; 
} 

, 그것을 적절한 값을 출력한다 : 여기서 그 메시지를 트리거하는 방법이다. 선의 주석을 지우지 않으면 처음에만 작동하고 두 번째 버튼을 터치하면 충돌합니다.

저는 이틀 동안 조금 고생했습니다. 나는 누군가가 이것에 약간의 빛을 가져 오기를 바랍니다.

+1

당신이 좀비를 실행 한 또한 실행 아래에 "분석"? –

+0

을 활성화 제품 메뉴를 열고 메모리 문제가 있는지 확인하십시오. 거의 확실하게 _pinpadNumber가 유지되지 않으므로, 그 릴리스되고, 운영 체제는 NSSet에 대한 나중에 그 메모리 위치를 사용하고 있습니다. –

+0

좋아, 그래서 좀비와 함께 실행할 때 : *** - [CFString stringByAppendingFormat :] : 메시지가 할당 취소 된 인스턴스로 전송되었습니다. 여전히 문자열 인스턴스를 해제하는 이유를 이해할 수 없습니다. 나는 아무데도 그것을 풀어주지 않는다. –

답변

2

먼저 코드를 작성하고 분석하십시오. 확인 된 오류를 수정하십시오.

다음, 당신은 아마 ARC이 라인을 사용하지 않는

...

_pinpadNumber = [_pinpadNumber stringByAppendingFormat:@"%i", [sender tag]]; 

은 ... _pinpadNumber에 오토 릴리즈 객체를 할당한다. 첫 번째 실행에서 _pinpadNumber은 가능성이 nil (당신은, 말하자면, 다른 곳 @""이 그것을 초기화하지 않는 한 -. 유효한 개체 수 있습니다 오토 릴리즈 오브젝트가 풀에서 배출 된 것을 다음 패스에

하고, , 당신이 볼 오류가있는 앱 충돌합니다.

당신은 좀비 탐지를 켜고 가능성이 좀비 메시지를 볼 수 있었다.

관련 문제