Хитрость заключается в использовании одноэлементного класса, класса google myGlobals, который в основном используется как одноэлементный. Хотя если вы действительно хотите использовать NSTimer
, то
позволяет сказать, что представление 1 - это то, в которое вы переходите ипредставление 2 - это то, что вы вернетесь назад 2.
Так что в случае представления 2 напишите NSTimer
, чтобы сделать недействительным таймер в viewDidLoad
(при условии, что у вас есть два отдельных класса для обоих представлений).Проблема возникнет, потому что когда вы перейдете к просмотру 1, таймеры представления 2 будут освобождены.Итак, создайте класс Singleton и сохраните указатель NSTimer
следующим образом
//to be done in viewDidLoad function
theGlobals *globals = [theGlobals alloc] init];// for the singleton class to initiate,
[globals.myTimer invalidate];
//to be done in viewDidUnload
theGlobals *globals = [theGlobals alloc] init];// for the singleton class to initiate,
globals.myTimer = [NSTimer scheduledTimerWithTimeInterval: 5.0
target: self
selector:@selector(onTick)
userInfo: nil repeats:YES];
о, и вот код класса myGlobals, который вам понадобится
//theglobals.h file
#import <Foundation/Foundation.h>
@interface theGlobals : NSObject
{
NSTimer *myTimer;
}
@property (nonatomic, copy) NSString *changeyes;
+(theGlobals*)sharedInstance;
@end
//implementaton .m file
#import "theGlobals.h"
@implementation theGlobals
@synthesize myTimer;
static theGlobals *sharedInstance;
- (id) init
{
return self;
}
+(theGlobals*)sharedInstance
{
if (!sharedInstance)
{
sharedInstance = [[theGlobals alloc] init];
}
return sharedInstance;
}
@end