これは私の友人が私のアプリケーションをテストするときに発生しているエラーですが、再現できません。私は、コードから始めましょう:インスタンスに送信されたセレクタが認識できませんが、理由がわかりません
TransferFrequency.h
@interface TransferFrequency : NSObject
- (BOOL)isImmediate;
// Other details...
@end
TransferFrequency.m
@implementation TransferFrequency
// Other details...
- (BOOL)isImmediate
{
return YES;
}
@end
Transfer.h
@interface Transfer : NSObject
@property (nonatomic, retain) TransferFrequency* frequency;
// Other details...
@end
をTransfer.m
@implementation Transfer
@synthesize frequency;
// Other details...
@end
CreateTransferView.h
@interface CreateTransferView : UITableViewController
@property (nonatomic, retain) Transfer* transfer;
// Other details...
@end
CreateTransferView.m
@implementation CreateTransferView
@synthesize transfer;
// Other details...
- (void)confirmButtonTouched
{
// The crash happens on the following line, as confirmed by stack trace
if([self.transfer.frequency isImmediate])
// Do some stuff
}
@end
ユーザーが確認ボタンをタッチすると、confirmButtonTouched
が呼び出されます。
-[TransferFrequency isImmediate]: unrecognized selector sent to instance 0xeec6db0
セレクタisImmediate
が正当なTransferFrequency
オブジェクト上で呼び出されているように私には見えますが、iPhoneが、それはそのセレクタを見つけることができないと言っている:これは私の友人はなっているエラーです。
実際にはこのエラーを私に報告しているiPhoneがいくつかありますが、私はそれらのどれにも物理的にアクセスできませんので、遠くからデバッグしています。私自身のiPod touch、iPhone、iPhoneエミュレータはすべてうまく動作します。
何が原因である可能性がありますか?
Transfer initメソッドで周波数オブジェクトを作成しましたか、このオブジェクトが他のオブジェクトからTransferFrequencyを取得していましたか? (CreateTransferView.transferと同じ質問です)? –
コードはうまく見えますが、あなたが記述している効果につながると思う唯一の問題は、 'TransferFrequency'オブジェクトの' isa'ポインタに格納されているディスパッチテーブルの破損です。 – dasblinkenlight
@ TomaszWojtkowiak:CreateTransferViewは '[self setTransfer:[[Transfer alloc] init]]'を使って 'viewDidLoad'に新しいTransferオブジェクトを作成します。 TransferFrequencyオブジェクトは、ユーザーが1つを選択すると設定されます。 'self.transfer.frequency = someFrequencyObject' – Aaron