唠叨
所有文章开头都是要唠叨一下,我也是. 大部分文章都会和你说,推送应该怎么怎么实现.
都是那一套,可是遇到的坑,都不写下来.
正文,本地推送
一般都会告诉你这么写
UIViewController:A 接受推送方(写,就让别人明白,好文章是你看了拿过来就能用,然后再来琢磨细节,拿来各种报错是最让人心痛的.)
这里用了OC的写法
注册通知
- (id) init{
self = [super init];
if(self != nil){
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationAction:) name:@"refreshData" object:nil];
}
return self;
}
对应的要加上释放的代码
- (void)dealloc{
//移除指定的通知,不然会造成内存泄露
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"refreshData" object:nil];
//下面的方法是可以移除所有通知
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
但是这里谁也没说 为啥放在init里面
这里的坑在这重点来了:
ps: 如果你是代码创建的controller.没涉及其他的创建.放在init里面
如果你是storyboard(被人喜欢戏称sb).创建的.那么要放在viewDidLoad周期函数里面
具体原理你们自己想想.(我不喜欢别人喂我,也不喜欢直接喂别人,实际上我也是说不明白,但是能理解明白)
UIController: B (这个是发送方,很简单一句话,复杂一点的告诉你传字典放在,UserInfo里面但是谁也没有告诉你.为啥这么做,我只是抛砖引玉,具体的可以查查.)
这里面用了Swift写法
NotificationCenter.default.post(name: NSNotification.Name("refreshData"), object: ["value1":level])
但是这个参数五花八门,所以尝试了好多东西.自己都有点懵逼了
比如 object: 可以向我这样传字典,也可以穿self 会报错,跟销毁有关,传nil 接受方会影响.我没有往下实验.项目比较紧张,具体的用的时候试一下就好,这里挺简单
object 也可以传输字符串之类我没有实验留给想具体学习的人用吧.
结束语
学习和作项目比较随意,不想以前那么追求细节了,具体还是看环境和工作的要求,速度和相关的公司需要吧.
我也是半路出家,一直搞java android,然后出家去了iOS这里.
也是一边工作一边努力学习. 互相探讨学习欢迎来我简书讨论.
回复也很随意,可能不回,哈哈哈....
ps: 不用厌烦,我是怎么方便怎么舒服怎么来. OC和Swift 混合开发.尽量能看懂有条理,不会的地方就现学现卖. 其实语言这个东西是相通的,深入了咱就不说,就说能用,能做项目,能看懂.
这篇就是个水的文章,凑合看.
网友评论