0

Alert のクラス レベル メソッドを作成します。

@interface TestAlert
@end
+ (void)showErrorAlert:(NSTimer *)message
{
.......
 UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:messageIn delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alert show];
}

そして、次のように直接呼び出したいscheduledTimerWithTimeInterval:

    [NSTimer scheduledTimerWithTimeInterval:0.001 target:TestAlert selector:@selector( showErrorAlert:) userInfo:error repeats:NO];

もちろん文法ミスはあります。

showErrorAlertはメソッドに置くことができることを知っています:

- (void)showError:(NSTimer *)timer
{
    //NSLog(@"show error %@", error);
    [TestAlert showErrorAlert:(NSString *)[timer userInfo]];
}

それで

[NSTimer scheduledTimerWithTimeInterval:0.001 target:self selector:@selector(showError:) userInfo:error1 repeats:NO];

ただし、 r メソッドshowErrorAlertからのエラー メッセージが解放されているため、 を呼び出すとクラッシュします。showErro

直接電話showErrorAlertしてもいいですか? できない場合、エラー メッセージのリリースを回避するにはどうすればよいですか?

4

2 に答える 2

2

[TestAlert class]の代わりにターゲットとして使用してTestAlertください。

于 2012-06-15T04:04:45.267 に答える
0

これを試してみませんか。提供されているperformSelectorのすべてのタイプを見つけることができます:メソッドはここにあります:

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html

  • PerformSelector:
  • PerformSelector:withObject:
  • PerformSelector:withObject:withObject:– PerformSelector:withObject:afterDelay:
  • PerformSelector:withObject:afterDelay:inModes:
  • PerformSelectorOnMainThread:withObject:waitUntilDone:
  • PerformSelectorOnMainThread:withObject:waitUntilDone:modes:
  • PerformSelector:onThread:withObject:waitUntilDone:
  • PerformSelector:onThread:withObject:waitUntilDone:modes:
  • PerformSelectorInBackground:withObject:
于 2012-06-15T06:26:16.740 に答える