我有一个大约有 50 个视图的 iOS 应用程序。我想在用户访问的每 5 个屏幕后执行一些操作。我知道我可以创建一种全局计数器变量并在每个视图的 viewDidLoad 上对其进行更新,如果计数为 5,则执行该操作并重置该计数器变量。有没有更好、更有效的方法来做到这一点?同样展望未来,如果我需要更改某些内容,我宁愿在单个文件中进行,而不是在我的所有视图中进行。非常感谢对此的一些投入。
问问题
204 次
1 回答
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
于 2013-08-13T22:02:18.727 回答