我的情况是我需要经常轮询云并查看是否有可用的数据,然后通过更新的导航项左侧按钮和更新的图标通知用户(App)。
所以流程是这样的: 在Appdelegate中,我有一个NStimer对象,每1分钟触发一次,从云端加载元数据。加载元数据后,它会通知数据加载成功。无论ViewController堆栈中哪个视图控制器可见,都会观察到该通知。
所以,问题: a)这种模式是否可持续且可扩展?我想在这里与云无关。 b)可以采取哪些措施来改进这种策略以使其具有可扩展性? c)有哪些替代策略可以实现这一目标?
如果有人对此问题感兴趣,我会发布代码。
答案 0 :(得分:1)
我会给你更新左键的代码片段。显然你可以在这里改变各种变量,所以以此为例。
-(void) configureLeftBarButtonItem
{
UIButton * leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 11.5, 15)];
[leftButton setBackgroundImage:[UIImage imageNamed:@"backarrow.png"] forState:UIControlStateNormal];
[leftButton addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside];
// you can obviously do any image name and any selector and any view, button is just a classic example
UIBarButtonItem *leftButtonItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
// this is so that the button is not right up against the side
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil action:nil];
negativeSpacer.width = 10;
self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItems = [NSArray
arrayWithObjects:negativeSpacer, leftButtonItem, nil];
}
就可伸缩性而言,我不是这方面的专家,但我已经编写了一些服务器驱动的应用程序,我认为每分钟请求服务器一次并不是给定服务器带来的负担,而且基本上是合理的。我每10-15秒(准消息应用程序)请求服务器,这很好。我认为从服务器每分钟随机更新导航项目可能无法获得最佳用户体验,因为我可以想象不断变化的导航流程可能会让用户感到困惑。话虽这么说,我不确定你的具体需求是什么,所以我不能再进一步评论。