-1

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

4

1 回答 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 回答