线程问题---在iPad上会崩溃,在iPhone上不会崩溃

应用的场景是在开发中使用了单选按钮-----在tableView上添加单选按钮操作,即点击就可以选中相应的操作,具体的界面展示如下:

这种情况下在iPhone 上展示选择并未有什么问题,但是当应用运行在iPad上的时候就会出现如下错误:

错误的原因很明显就是引用了已经释放掉的资源,这个资源就是:

设置了它的类型属性为assign 对象不会被持有,就导致了一个悲剧,在ipad上就崩溃了【iOS版本9.3.5】  直接将assign的属性

改成strong 就解决了这个问题----------原因:这个是因为assign可以指向被释放掉的内存, 修饰的对象为弱引用,参数对象的引用指针不会增加,

这样对象本身的作用是记录不同的对象的点击位置,当其指针不会改变时 空指针的问题,形成了崩溃。

   copy/retain/strong/assign/weak  都是对内存管理有影响的关键字

1.copy NSString、block、可变的对象类型(NSMutableString、NSMutableArray、NSMutableDictionary等)

2.retain可以在MRC/ARC环境中用于修饰对象类型的属性,当调用setter方法时,参数对象的引用指针会增加 1

3.strong 在ARC环境中用于修饰对象类型的属性 当调用setter方法时,参数对象的引用指针会增加 1

4.assign 在MRC/ARC环境中,用于修饰基本数据类型或对象类型的属性;修饰对象类型的属性时表示弱引用,虽然可以使用参数对象,但是参数对象的引用指针不会增加

5.weak 在ARC环境中使用,修饰对象类型,表示弱引用,虽然可以使用参数对象,但是参数对象的引用指针不会增加

retain 和 strong的区别:strong修饰的属性所指向的对象,当这个被引用的对象的引用计数(retainCount)为0时,系统会自动将对象对应的指针 置为 nil,并释放对应的内存空间,而retain修饰的是不会的,容易造成野指针,引起不明的崩溃 ,strong比retain 安全,但是只能在ARC环境使用

assign 和 weak : 使用weak修的属性所指向的对象,引用计数为0以后,系统会将对象的指针置nil,assign修饰的属性时不会进行这个操作的,容易造成野指针,引起不明的崩溃 ,weak只能在ARC中使用,且weak不能修饰基本数据类型

时间: 2024-11-05 13:04:16

线程问题---在iPad上会崩溃,在iPhone上不会崩溃的相关文章

解决百度地图在iPad和iPhone上无法定位

在iPad和iPhone上运行百度地图经常出现如下问题 didFailWithError: Error Domain=kCLErrorDomain Code=0 "The operation couldn't be completed. (kCLErrorDomain error 0.)" 解决方法: 1.检查设备确实连上了有效的wifi活着3G 2.去设置---隐私--定位服务查看应用是否定位 3.重新连接网络 4. Product---Scheme---Edit Scheme---

Q12:app在iPhone上运行正常,iPad上出现黑边问题解决方案

Q12:app在iPhone上运行正常,iPad上出现黑边问题解决方案 问题描述: app 在iPhone上运行正常,在iPad上出现黑边. 问题原因: 首先选中你的项目,右侧出现我们熟悉的General.Capabilities.Info等等.现在检查General->Deployment Info的Deployment Target 以及 Devices,一要保证ios系统版本配套,二要保证设备选中通用,有些朋友由于前个项目是设置了iPhone,第二次建项目时一时大意没有设置回来,那可就糟糕

在iphone上安装多个微信 【微信营销必备】

做微信营销有很多因素会影响,xmyanke认为微信消息的活跃度会让你的微信公众号在微信搜索排名靠前,既然那样,我们可以通过运营几个小号来达到目的.每每当你在几个微信小号之间切换的时候有没要奔溃的赶脚?有没办法在一个手机上安装多个微信呢?幸好大神们早就想到了,下面我们就介绍一下在iphone上安装多个微信,android版暂还没破解 首先需要用PC下载2个软件:一个是plist Editor,这个软件用来修改微信xml文件(修改微信安装包既微信IPA). 另外一个是itools,或者91助手,用于

在iPhone上取消APP订阅

1.在iPhone上打开APP Store,在精品推荐那个界面滚动到底部. 2.点击Apple ID那一栏,如图: 3.点击查看Apple ID,如图: 4.点击管理,如图: 5.关掉此选项,如图: 6.取消订阅成功,如图:

iPhone 上你可能还不知道的小技巧

用了这么久的 iPhone,这些技巧你可能都还不知道哦. 1.怎么用耳机切歌? 将耳机的话筒部位的中间(平时暂停用的,按一下)连按两下 即可. 连按两下,下一首. 连按三下,上一首. 2.摇一摇,相当于电脑上的CTRL-Z/CTRL-Y,你知道么? 在iPhone上输入文字(例如发短信)时,写了一段了,觉得不好,想重写. 你会一次次地点按快捷键,逐个地把它们删掉么? 图样图森破了! 把你的手机摇一摇,晃一晃. 发现什么了? 是的,你没看错.可以一键撤销刚刚的输入. 使用时要小心.它是撤销掉最近的

iphone上click事件不触发的问题解决。

//在ID为jsProvince上有这么一个事件: $('body').on('click', '#jsProvince', function(e){ $(this).next('.province-list').removeClass('hide'); }); 但是在iphone上点击就是没反应,无法出发绑定的点击事件. 但是在android上测试是没问题的. 找了半天终于找到了解决办法: 只需要给ID为jsProvince的元素添加一个如下的css样式就好了: #jsProvince{ cu

iPhone 上怎么给CSS定义 active 样式

如果给按钮定义 :hover 样式,在 iPhone 上按钮点击一次是 hover 态,再点击一次 hover 态才会消失,这不是我们想要的,继而想通过定义 :active 样式来实现按钮按下时的效果,但定义的 active 样式在 iPhone 上点击时没有任何效果 只需添加一段 js 即可: document.addEventListener("touchstart", function() {},false); 另一个方案,可以在 body 上添加 ontouchstart=&q

invalid Date!iphone上支持的时间格式

今天碰到个有意思的东西,在实现一条时间进度条的时候, 就是像这样的时间进度条 实现过程中发现pc和安卓手机上完美显示,但是iphone上却毫无反应,甚至没有任何波澜.(或者想告诉我它是多么的高冷?) 定位代码,发现问题出现在时间处理的方式上: 为了比较两个时间点的大小和控制距离,我用new Date().getTime()来获取毫秒数,比较毫秒数. 2012-2-22 06:23 这是我得到的时间格式,理所当然 new Date("2012-2-22 06:23 ").getTime(

Windows Azure在iPhone上的管理客户端推荐(国际版和国内版通吃)

根据NIST定义的云计算五大标准,按需付费(英文叫Pay As You Go)是一个很重要的标准定义,说得通俗点叫用多少算多少. 我本人在使用Windows Azure虚机功能的初期阶段,也就是大概在2012年中旬的时候,经常犯的一个错误是忘记掉关闭虚拟机.这其实也是我们多年使用虚机的习惯,在公司内部的虚机哪能关啊:即使是用来测试的虚机,其生命周期也大多是新建-调试-删除,很少有关机这个动作,生产环境用的虚机更不用说了. 所以直接导致的结果是每个月150美金的Credit很快就花完了,有的时候想