对于iOS开发开发者, Model View Controller 模型能帮你快速理清开发思路,最近在使用Model给Controller传递数据时候了解了关于

NSNotification的一些用法,写出来记录一下,代码片段如下:

当PhotoDataBaseContext被更新时候,会广播一个通知,通知一般都是NSDictionary类,包含了一个Key和Value,Value是发送内容的地址;

接受消息的一方必须要在发起广播之前开始监听,因为广播是一瞬间的事情,当错过了广播的时间之后就再也接受不到通知了,所以一般Controller会在绘制xib开始建立监听,那么就用到 -(void)awakeFromNib,抢在广播之前建立监听,这样就可以在广播的时候收到通知,从而得到更新,因为接收到的数据的地址,所以以后在改地址被更新的数据在Controller内也能被更新。欢迎大家给一下不同的建议;

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

    self.photoDataBaseContext  = [self createMainQueueManagedObjectContext];
[self startFickrFetch]; - (void) setPhotoDataBaseContext:(NSManagedObjectContext *)photoDataBaseContext{ [NSTimer scheduledTimerWithTimeInterval:* target:self selector:@selector(startFickrFetch:) userInfo:nil repeats:YES];//Call startFlickrFetch: _photoDataBaseContext = photoDataBaseContext;
NSDictionary * userInfo = self.photoDataBaseContext ? @{ PhotoDatabaseAvailabilityContext : self.photoDataBaseContext } :nil;
//当发送通知时候,被通知的对象必须先于发送通知之前建立监听信息
//因为发送通知时候,通知在发送之后,如果没有被监听,那么就再也接受不通知,
//所以要被通知者要优先建立监听,否则机会丢失信息
[[NSNotificationCenter defaultCenter] postNotificationName:PhotoDatabaseAvailabilityNotification object:self userInfo:userInfo];
}
//Call startFlickrFetch:
- (void) startFickrFetch:(NSTimer*)time{
[self startFickrFetch];
}
// 写在控制器代码内 ViewController
-(void)awakeFromNib{
NSLog(@"notification"); [[NSNotificationCenter defaultCenter] addObserverForName:PhotoDatabaseAvailabilityNotification object:nil queue:nil usingBlock:^(NSNotification *not){
self.manageObjectContext = not.userInfo[PhotoDatabaseAvailabilityContext];
}];
}

最新文章

  1. shell统计指定范围内的所有质数以及它们的和
  2. phongap、APICloud、ionic等app开发平台你都知道吗?
  3. Android复制粘贴文字
  4. docker基本操作
  5. 通过HttpWebRequest请求与HttpWebResponse响应方式发布接口与访问接口
  6. Mssql中一些常用数据类型的说明和区别
  7. [moka同学笔记]yii2.0的下拉菜单与bootstrap下拉菜单
  8. 我的android学习经历24
  9. 【MongoDB】MongoDB服务器搭建(Unix/Linux)
  10. 使用Lucene.net提升网站搜索速度整合记录
  11. XE5 ANDROID平台 调用 webservice
  12. Hbase学习笔记(安装和基础知识及操作)
  13. is_numeric漏洞分析
  14. CSS learnning...
  15. 周口网视界易付点卡销售平台招商中 www.zkpay.cn 欢迎各界朋友加盟合作。
  16. 基于 zepto 的触摸函数封装
  17. mysql处理varchar类型的between和and的时间问题少一天解决;
  18. python转化字符串形式的json
  19. Fundamental theorem of arithmetic 为什么1不是质数
  20. node express 跨域问题

热门文章

  1. DataGridView风格设置
  2. 为什么在进行Full GC之前最好进行一次Minor GC
  3. Oracle 设置主键自增长__Oracle
  4. hbase性能调优(转载)
  5. Error: Cannot run program "/home/xxx/android_developer_tools/android-ndk-r8/ndk-build.cmd": Unknown reason
  6. Winform状态栏控件中Label靠右显示的方法
  7. HTML->CSS->JS->PHP的顺序及相关网址(转)
  8. c#与Java事件定义的不同
  9. R: 对向量中的每个元素,检查其是否包含某个“单词”
  10. eclipse打包第三方jar的超简便方法