我有一个pinpad类,在每次输入后都会对其上的按钮进行加扰。该类作为单个项目完美地工作,但是当添加到特定项目时,我收到[__NSCFSet stringByAppendingFormat:]: unrecognized selector sent to instance
消息。以下是触发该消息的方法:
-(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];
}
如果我评论顶部_pinpadNumber = [_pinpadNumber行,它会打印相应的值。当我取消注释该行时,它仅在第一次工作时,并且在第二个按钮上触发时崩溃。
我一直在为此争吵两天多一点。我真的希望有人能为此带来一些启示。
答案 0 :(得分:2)
首先,构建并分析您的代码。修复发现的任何错误。
接下来,你可能没有使用ARC和这一行......
_pinpadNumber = [_pinpadNumber stringByAppendingFormat:@"%i", [sender tag]];
...正在为_pinpadNumber
分配一个自动释放的对象。在第一次执行时,_pinpadNumber
可能是nil
(除非您将其初始化为,例如,@""
在其他地方 - 它可能是有效的对象。
在下一次传递中,该自动释放的对象已从池中耗尽并 boom ,您的应用程序因您看到的错误而崩溃。
您可以启用僵尸检测,并可能会看到僵尸消息。