1

値を変更したり、宣言された変数やオブジェクトを変更したりすることはできません。誰が何が悪いのか見ることができますか?

私のアプリのデリゲートメソッドでは。

- (void)applicationDidEnterBackground:(UIApplication *)application
{

    MainPage *mp = [[MainPage alloc]init];

    mp.newTime = [[NSDate date] timeIntervalSinceDate:mp.date];
    [mp.timer invalidate];
    mp.switchT = 1;
    mp.playBarButton.enabled = YES;
    mp.pauseBarButton.enabled = NO;
    mp.stopBarButton.enabled = YES;
   [mp.avPlayer pause];

}

上記のアクションは実行されません。私のmainpage.hファイルでは、次のように宣言されています。

@property (nonatomic, retain) AVAudioPlayer *avPlayer;
@property (strong, retain) NSTimer *timer;
@property (strong, retain) NSDate *date;
@property (nonatomic) NSTimeInterval newTime;
@property (nonatomic) NSInteger switchT;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *playBarButton;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *pauseBarButton;
@property (strong, nonatomic) IBOutlet UIBarButtonItem *stopBarButton;

もちろん、私の実装ファイルでは、これらは合成されてmainpage.mおり、appDelegate ファイルではなく、コード内ですべてうまく機能します。誰でも問題を見ることができますか?これは完全に機能するアプリであることに注意してください。すべてがうまく機能しますが、私の applicationDidEnterBackground メソッドで次のコードを実行できないだけで、それが私のプロパティの作成方法だと思いますか? また、アプリのデリゲートに記述されたコードにエラーはありません。

4

2 に答える 2

2

これにより、新しいオブジェクトMainPage *mp = [[MainPage alloc]init];が作成されます。あるオブジェクトの値を変更しても、別のオブジェクトの表示には影響しません。 MainPageMainPage

実際に表示しているオブジェクトへの参照をアプリ デリゲートに渡すか、バックグラウンド通知のハンドラーを内部にMainPage配置して、独自の作業を実行できるようにします。

于 2013-09-17T19:31:02.833 に答える
2
NSNotificationCenter defaultCenter] addObserver:self selector:@selector(goBackground) name:UIApplicationDidEnterBackgroundNotification object:nil]; // and later
 - (void) goBackground { [timer invalidate], timer = nil; }
于 2013-11-06T20:33:38.750 に答える