私はこの問題の解決策を数日間探していましたが、同様の投稿を見つけましたが、私はdealloc'dを取得することから取り組んでいるインスタンスを停止します。うまくいけば、私はそれがUIAlertViewDelegate
プロトコルに準拠することを宣言しているクラス(LKNetworking
)を持っているUIAlertViewDelegateクラス "self"インスタンスがボタンが押される前にdeallocされました
..私はちょうどそれを逃した、または誰かが私は私の脳を障る停止することができます。現在はNSObject
のサブクラスですが、私はUIResponder
を試しましたが、同じ問題が発生しています。
問題は、UIAlertビューを作成し、デリゲートをself
に設定することです。 UIAlertビューはOKを表示しますが、呼び出すLKNetworking
クラスインスタンスは即座に(NSLOGで表示されるように)deallocされ、ボタンをクリックすると、メッセージは割り当て解除されたインスタンスに送信されます(LKNetworking alertView:clickedButtonAtIndex:割り当て解除インスタンス0x6e5ce40)SO
に送信されたメッセージは、私のような.hファイルでプロパティを作成しようとしました:
@property (strong, nonatomic) LKNetworking *strongNetworkingProperty
私はその後、strongNetworkingPropertyのIVARとメッセージに私のUIAlertViewのデリゲートを設定しようどこにも行かないようですので、いいですね。
私はいくつかの答えを見ましたwここでは、ここで
アラートが呼び出されLKNetworking
メソッドのサンプルコード..です人々は
delegate
nil
にアラートビューを設定すると言うが、私は、ユーザーの選択に応じて応じて行動する必要があるので、それは私の全体の目的に反し
delegate
方法:
-(void)checkGameServerVersion: (float) serverGameVersion {
if (serverGameVersion == GAMEVER) {
NSLog(@"matched");
// Continue flow here..
} else {
NSLog(@"not matched");
//Game version does not match, end game, force upgrade
UIAlertView *oldVersion = [[UIAlertView alloc]initWithTitle:@"Ugrade Required" message:@"A new game version is available, Please update your game and try again." delegate:self cancelButtonTitle:@"Quit" otherButtonTitles: nil];
[oldVersion show];
}
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"button = %d",buttonIndex);
if (buttonIndex == 0) {
NSLog(@"pressed button 0, quitting gam");
}
}
@end
ご意見をいただければ幸いです。
おかげ
作成中のLKNetworkingインスタンスは表示されません。 – CodaFi
@CodaFi:LKNetworkingは私のAppDelegateからインスタンス化され、元のcheckGameVersion:の呼び出しが呼び出されます。 – Lkabo