我有一个iOS应用程序,大约有50个视图。我想在用户访问的每第5个屏幕后执行一些操作。我知道我可以创建一种全局计数器变量并在每个视图的viewDidLoad上更新它,如果count为5,则执行该操作,并重置该计数器变量。有更好,更有效的方法吗?展望未来,如果我需要改变某些东西,我宁愿在一个文件中完成它而不是我的所有观点。非常感谢对此的一些投入。
答案 0 :(得分:1)
我会创建一个单例类来跟踪你的计数器逻辑,为你的所有视图控制器创建一个基类,然后在你的基类的viewDidLoad中调用计数器单例。
我认为这样的事情会对你有用:
@interface ViewCountManager()
@property(nonatomic) NSInteger viewCount;
@end
@implementation ViewCountManager
#define kOperateOnCount 5
+(ViewCountManager *)viewCountManager
{
static ViewCountManager *viewCountManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
viewCountManager = [[self alloc] init];
});
return viewCountManager;
}
-(BOOL)shouldPerformOperation
{
BOOL retValue = NO;
if( self.viewCount == kOperateOnCount - 1 )
{
retValue = YES;
self.viewCount = 0;
}
else
{
self.viewCount++;
}
return retValue;
}
@end
@implementation CountedViewController
-(void)viewDidLoad:(BOOL)animated
{
[super viewDidLoad:animated];
BOOL shouldPerform = [[ViewCountManager viewCountManager] shouldPerformOperation];
[self performOperation];
}
@end