在iOS应用中计算观看次数的有效方式

时间:2013-08-02 16:05:09

标签: iphone ios objective-c view

我有一个iOS应用程序,大约有50个视图。我想在用户访问的每第5个屏幕后执行一些操作。我知道我可以创建一种全局计数器变量并在每个视图的viewDidLoad上更新它,如果count为5,则执行该操作,并重置该计数器变量。有更好,更有效的方法吗?展望未来,如果我需要改变某些东西,我宁愿在一个文件中完成它而不是我的所有观点。非常感谢对此的一些投入。

1 个答案:

答案 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