iOS不移除通知也不会崩溃原因】的更多相关文章

在iOS9.0之前,通知中心对观察者对象进行unsafe_unretained 引用,当被引用的对象释放时不会自动置为nil,,也就是成了野指针. iOS9.0之后通知中心对观察者做了弱引用. 参考:https://blog.csdn.net/sinat_28585351/article/details/78133756…
Where to remove observer for NSNotification? 在dealloc方法中移除通知观察者带来crash NSNotificationCenter中的通知消息已经发出,而观察者对象子线程释放,也就是抛送通知消息的线程和观察者对象子线程释放的线程不一致时,存在crash风险,原因是NSNotificationCenter不是线程安全的. 解决办法:尽早移除通知 或者保证释放和抛送通知在同一个线程.…
目前项目中需要对iOS系统通讯录进行读取,修改操作.在进行对地址修改的时候,出现了一个奇怪现象: ● 如果contact没有address字段(或者一个全新的contact),对它的address进行修改是可以成功的, ● 如果这个人有过address字段,此时对它就行修改就崩溃.控制台打出: *** -[CFString release]: message sent to deallocated instance 0x81d26f0 这应该是一个僵尸对象,重复释放某一个对象.首先我对修改通讯录…
http://www.cocoachina.com/ios/20151214/14596.html 在了解控制器的生命周期之后,我们都知道viewWillAppear:方法是在控制器的view将要显示的时候调用的,而viewWillDisappear:方法是在控制器的view将要隐藏的时候调用.很多时候我们根据自身需要将相关代码逻辑添加到这两个方法中,我们看下如下代码片段: 监听键盘的通知代码 这段代码是在控制器的viewDidLoad:方法中注册了一个键盘弹出的通知和键盘隐藏的通知,然后在调用…
1.创建通知,最好在viewDidLoad的方法中创建 - (void)viewDidLoad { [super viewDidLoad]; //创建通知 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tongzhi:) name:@"tongzhi" object:nil]; } //接收通知并相应的方法 - (void) tongzhi:(NSNotification *)noti…
[前言介绍] iOS的一种设计模式,观察者Observer模式(也叫发布/订阅,即Publich/Subscribe模式). 观察者模式,包含了通知机制(notification)和KVO(Key-value-observing)机制. 在这本文中,我们将介绍在日常项目当中经常使用到的通知机制这一种设计模式. 通知机制 委托机制是代理“一对一”的对象之间的通信,而通知机制是广播“一对多”的对象之间的通信: 一.是什么?[生活问题例子] “短信天气预报” 当A类发送一条信息给通知中心时,注册为用户…
原文地址:Developing Push Notifications for iOS 10,译者:李剑飞 虽然通知经常被过度使用,但是通知确实是一种获得用户关注和通知他们需要更新或行动的有效方式.iOS 10有了新的通知,如新消息.商业信息和时间表的变化.在本教程中,我将向你展示如何使用通知在你的iOS应用程序,并且显示iOS 10引入了新特性.开发iOS 10推送通知你需要最新版本的Xcode,Xcode 8测试版,这些目前都是可下载的,在下载页面. 你可以去Github下载本教程的整个工程.…
iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法. ①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册: if ([[UIDevice currentDevice].systemVersion doubleVa…
這一篇我們用Windows Azure 的Mobile Service 來實作iOS的推播通知,底下我們分成三個階段來探討如何實作推播通知的服務: 第一階段: 開啓你的Windows Aure服務  在Azure上建立一個Mobile Service服務  在Mobile Service 裡建立一個儲存要被推播資料的Table  建立你的iOS App(這裡我們直接下載Windows Azure上的Xcode 專案範本) 到這個階段完成的時候,在iPhone simulate模擬器裡執行Azur…
都知道viewWillAppear:方法是在控制器的view将要显示的时候调用的,而viewWillDisappear:方法是在控制器的view将要隐藏的时候调用. 这看上去没什么问题,键盘的显示和隐藏也都能监听到.可是稍微细心下就会发现,苹果在iOS7中增加了导航控制器侧滑返回功能,现在绝大多数App都使用了这项功能(有些App重写了自带的返回键之后忘记开启左滑返回手势了).那么这项功能会带来什么问题呢? 问题就是: 当触发侧滑返回时会调用系统自带的viewWillDisappear:方法,在…
IOS手机 html5页面 数字变成蓝色链接的原因 这个是ios手机自动识别 写如下代码 即可<pre> <meta name="format-detection" content="telephone=no" /></pre>…
1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remote Notification) 本地推送通知(Local Notification) 2.推送通知的5种形式 3.推送通知的特点 App关闭时,可以接收通知并显示 App打开并处于后台时,通知会显示 App打开并处于前台时,通知不会显示 点击通知后,默认会自动打开发出通知的App 4.远程推送通知…
推送通知和NSNotification是有区别的: NSNotification:是看不到的 推送通知:是可以看到的 IOS中提供了两种推送通知 本地推送通知:(Local Notification):手机应用本身的通知,比如:闹铃 远程推送通知:(Remote Notification)从服务器发送过来的通知 推送通知的作用:让不在前台运行的App,告知用户App内部发生了什么事情.比如我们正在聊微信,突然界面上面出现了黑色半透明横幅(QQ好友给你发送的消息)这就是一个推送通知. 推送通知的呈…
推送通知可以做3件事:(1)文字信息(2)一种声音 (3)一个徽章的标记号(第几条消息..) 推送通知流程  (app应用程序--->iOS 设备--->APNS(apple服务器)---provider(我们的服务器端)) a.app应用程序 注册一个通知 b.iOS 设备--->APNS(apple服务器) c.APNS(apple服务器)--给一个令牌token(唯一的)->app应用程序 d.app应用程序--token-->provider e.provider--…
iOS 8提供了一个令人兴奋的新API来创建交互式通知(interactive notifications),它能让你在你的应用之外为用户提供额外的功能.我发现网上还没有关于如何实现它的比较好的示例教程,所以我将在这篇文章里来实现一个简单的交互式通知示例,分享给大家. 为了创建交互式通知,需要iOS 8提供的3个新类:UIUserNotificationSettings, UIUserNotificationCategory, UIUserNotificationAction 以及它们的变体.…
iOS 8提供了一个令人兴奋的新API来创建交互式通知(interactive notifications),它能让你在你的应用之外为用户提供额外的功能.我发现网上还没有关于如何实现它的比较好的示例教程,所以我将在这篇文章里来实现一个简单的交互式通知示例,分享给大家. 为了创建交互式通知,需要iOS 8提供的3个新类:UIUserNotificationSettings, UIUserNotificationCategory, UIUserNotificationAction 以及它们的变体.…
iOS获取通知需要注意以下三个地方iOS 设备收到一条推送(APNs),用户点击推送通知打开应用时,应用程序根据状态不同进行处理需在 AppDelegate 中的以下两个方法中添加代码以获取apn内容 如果 App 状态为未运行,此函数将被调用,如果launchOptions包含UIApplicationLaunchOptionsRemoteNotificationKey表示用户点击apn 通知导致app被启动运行:如果不含有对应键值则表示 App 不是因点击apn而被启动,可能为直接点击ico…
1: ios本地通知和远程通知 http://wangjun.easymorse.com/?p=1482 2: 苹果远程通知服务申请激活例图 (外国佬写的.) http://mobiforge.com/developing/story/programming-apple-push-notification-services 3:书籍参考:iPhone 开发秘籍 第16章 推送通知. 好了,进入正文: 首先是申请证书的网址 https://developer.apple.com/ios/manag…
注:按Home键让App进入后台执行时.方可查看通知. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. // 注冊本地通知 UILocalNotification *localnotifit = [[U…
●  什么是远程推送通知 ●  顾名思义,就是从远程服务器推送给客户端的通知(需要联网) ●  远程推送服务,又称为APNs(Apple Push Notification Services) ●  为什么需要远程推送通知? ●  传统获取数据的局限性 • 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的 数据内容 ● 远程推送通知可以解决以上问题 • 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知 远程推送通知使用须知 ● 所有的苹果设备,在联…
由于 iOS 编译的特殊性,为了方便开发者使用,我们将 i386 x86_64 armv7 arm64 几个平台都合并到了一起, 所以使用动态库上传appstore时需要将i386 x86_64两个平台删除后,才能正常提交审核,SDK当前路径下执行以 下命令删除i386 x86_64两个平台,bak文件是备份目录,上传appstore之后需要替换回bak目录下的SDK. 以下代码以MJDataLib.framework 为例,其他动态库参考修改: lmkdir ./bak cp -r MJDat…
在ios系统中,app应用程序无法在后台完成较多的任务,仅仅允许程序做一些有限的任务(如音视频播放.地理位置信息.voip).然而,如果你想做 一些有趣的事情,并且告知用户,甚至用户没有使用你的app应用程序,如收到一条微博信息,自己心爱的球队夺冠又或者晚餐已经准备好了等信息时,由于你的 app应用程序没有运行(或者程序进入后台,进程被挂起),因此,可能无法接收到相关的消息.         然而,苹果提供了这类情况的解决方案,替代你的app应用程序定时获取事件或者在后台去处理这些事件,你需要搭…
在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ci还不熟悉的,可以参考之前的文章使用gitlab ci构建Android包,这篇文章我们主要涉及三个知识点: IOS开发者证书. IOS打包命令. 如何往企业微信发消息. IOS开发者证书 IOS打包离不开开发者证书,因此首先我们需要先搞清楚IOS的证书是怎么回事,它是怎么工作的. 为什么需要证…
1.什么是本地推送通知 不需要联网的情况下,应用程序经由系统发出的通知 2.本地推送的使用场景 定时提醒,如玩游戏.记账.闹钟.备忘录等 3.实现本地推送通知的步骤 创建本地推送通知的对象UILocalNotification 设置本地推送通知对象的属性 fireDate                              推送的时间 alertBody                            通知的内容 alertName                          …
在处理UITableView表格时,我们希望用户能够和触摸单元格式进行交互,但是希望用户在完成交互之后,这些单元格的选中状态能够消失,.Cocoa Touch 提供了两种方法来防止单元格背持久选中. 1.cell.selectionStyle = UITableViewCellSelectionStyleNone;该方法缺点是虽然cell可以被用户选中后,但不会被突出显示.2.第二种方法允许单元格高亮显示,但是交互完成之后移除高亮显示.这需要通知表格取消单元格选中状态. 代码如下: -(void…
本地通知的基本使用 创建本地通知 设置属性 调度通知(添加通知到本地通知调度池) 注册用户通知权限(只需一次, 可以单独放在Appdelegate中, 或者别的地方) —> iOS8以后必须, 需要用户授权才可以发送通知 //1. 创建本地通知对象     UILocalNotification *localNotifi = [UILocalNotification new];          //2. 设置属性          //2.1 设置触发时间     localNotifi.fi…
观点: 代码面前没有秘密 添加通知的 Demo 代码 - (void)scheduleOneLocalNotification { [[UIApplication sharedApplication] cancelAllLocalNotifications]; UILocalNotification *localNotification = [[UILocalNotification alloc] init]; localNotification.alertBody = @"Proteas&qu…
UIDevice类提供了一个单例对象,它代表着设备,通过它可以获得一些设备相关的信息,比如电池电量值(batteryLevel).电池状态(batteryState).设备的类型(model,比如iPod.iPhone等).设备的系统(systemVersion) UIDevice特点: (1)通过[UIDevice currentDevice]可以获取这个单例对象 (2)UIDevice对象会不间断地发布一些通知,下列是UIDevice对象所发布通知的名称常量: UIDeviceOrienta…
移除tableViewCell中某一行的分割线 有2种方法 1. 移除系统的分割线,自己定义每行的分割线 self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 2. 指定某行分割线隐藏 [cell setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, MAXFLOAT)]; 让分割线的宽度和cell的宽度一致 cell.preservesSuperviewLayoutMargins…
对NSObject写一个分类: #import <Foundation/Foundation.h> @interface NSObject (FMObserverHelper) - (void)fm_addObserver:(NSObject *)observer forKeyPath:(NSString *)keyPath; @end //  对象被释放之前, 会调用dealloc方法, 其持有的实例变量也会被释放. //  在监听注册时, 为self和Observer关联个临时对象, 当两…