关于iOS本地推送小bug

作者: zcwfeng | 来源:发表于2018-02-25 21:33 被阅读10次

唠叨

所有文章开头都是要唠叨一下,我也是. 大部分文章都会和你说,推送应该怎么怎么实现.
都是那一套,可是遇到的坑,都不写下来.

正文,本地推送

一般都会告诉你这么写
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 混合开发.尽量能看懂有条理,不会的地方就现学现卖. 其实语言这个东西是相通的,深入了咱就不说,就说能用,能做项目,能看懂.
这篇就是个水的文章,凑合看.

相关文章

网友评论

    本文标题:关于iOS本地推送小bug

    本文链接:https://www.haomeiwen.com/subject/vocdxftx.html