关于MVC模型的NSNotification用法
2024-08-24 03:46:34
对于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];
}];
}
最新文章
- shell统计指定范围内的所有质数以及它们的和
- phongap、APICloud、ionic等app开发平台你都知道吗?
- Android复制粘贴文字
- docker基本操作
- 通过HttpWebRequest请求与HttpWebResponse响应方式发布接口与访问接口
- Mssql中一些常用数据类型的说明和区别
- [moka同学笔记]yii2.0的下拉菜单与bootstrap下拉菜单
- 我的android学习经历24
- 【MongoDB】MongoDB服务器搭建(Unix/Linux)
- 使用Lucene.net提升网站搜索速度整合记录
- XE5 ANDROID平台 调用 webservice
- Hbase学习笔记(安装和基础知识及操作)
- is_numeric漏洞分析
- CSS learnning...
- 周口网视界易付点卡销售平台招商中 www.zkpay.cn 欢迎各界朋友加盟合作。
- 基于 zepto 的触摸函数封装
- mysql处理varchar类型的between和and的时间问题少一天解决;
- python转化字符串形式的json
- Fundamental theorem of arithmetic 为什么1不是质数
- node express 跨域问题
热门文章
- DataGridView风格设置
- 为什么在进行Full GC之前最好进行一次Minor GC
- Oracle 设置主键自增长__Oracle
- hbase性能调优(转载)
- Error: Cannot run program ";/home/xxx/android_developer_tools/android-ndk-r8/ndk-build.cmd";: Unknown reason
- Winform状态栏控件中Label靠右显示的方法
- HTML->;CSS->;JS->;PHP的顺序及相关网址(转)
- c#与Java事件定义的不同
- R: 对向量中的每个元素,检查其是否包含某个“单词”
- eclipse打包第三方jar的超简便方法