iOS中绑定tableview后,变量值消失的问题

好吧,标题就以最通俗的语句命名,估计百度收录的时候,大家查找的时候会更加的方便。

iOS新手,这个问题着实调试了好长时间!

由于上手就开始做大的项目,也没时间从基础做起,相信大多数小公司的开发者都是这种模式。因此很多问题都产生自很基础的错误。

项目使用mvc结构,在异步读取完数据后,NSArray中model的数据就丢失了,专业点就是内存释放了,只剩下内存地址了。

可能大家的情况和我不同,所以解决方法也不一定相同。

项目服务端是asp.net webservice,使用AFNetworking读取到的数据类型为xml,然后再使用GDataXMLNode读取xml中的值赋给新建的model,从而生成model的NSArray。

在建立model的时候,属性的参数值设置为

// 发布者姓名

@property(nonatomic,assign)
NSString *SenderName;

注意是assign,好吧,这种建立属性的方式是copy别的代码的。

问题就出现在这里,属性设置的assign,属于地址引用,那么在调用完GDataXMLNode后,NSString就自动释放了,所以在ViewController中就读取不到值了。

只需要将assign修改为copy即可。

// 发布者姓名

@property(nonatomic,retain)
NSString *SenderName;

这是一个很基础的错误,在不了解内存释放机制和属性的情况下,解决这种问题相当棘手,下面就列出来这部分的基础知识,边做边学吧!

iOS开发中@property属性介绍:http://gaoyong.diandian.com/post/2011-11-02/6444165

iOS中绑定tableview后,变量值消失的问题

时间: 06-03

iOS中绑定tableview后,变量值消失的问题的相关文章

解决IOS中input失焦后,页面上移,点击不了问题

IOS在Input失焦后,发现body的页面会停止不下来,并且页面上的输入框,按钮点击事件,全部都移位了,需要滑动一下才可以正常. 下面是解决方法,可全局引用: var u = navigator.userAgent; var flag; var myFunction; var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); if (isIOS) { document.body.addEventListener('focusin', ()

iframe ios中h5页面 样式变大

实际项目开发中,iframe在移动设备中使用问题还是很大的,说一说我的那些iframe坑 做过的这个后台管理框架,最开始的需求是PC,但随着业务需要,需要将项目兼容到ipad,后台的框架也是使用的开源框架开发,使用的是iframe嵌套页面的方式 1.内部嵌入iframe,里面的内容页面中有绝对定位的元素,会有问题! 现象:项目中嵌入 <iframe /> 并设置宽高后,发现在 Android 手机浏览器上打开可以正常运行,但是在 iOS 手机上会有 iframe 页面样式莫名变大,效果如下:

IOS中的tableView刷新和加载数据的技巧

WEAK_SELF(vc); [self.tableView addLegendFooterWithRefreshingBlock:^{ vc.pageIndex++; [vc httpRequestWithPageIndex:vc.pageIndex]; }]; [self.tableView addLegendHeaderWithRefreshingBlock:^{ vc.pageIndex = 0; [vc.dataArray removeAllObjects]; [vc httpRequ

在脚本中使用export导出变量值

LD_LIBRARY_PATH环境变量可以用于设置Linux动态库的位置,常见的用法如export LD_LIBRARY_PATH=/home/username/foo:$LD_LIBRARY_PATH[1],但是每次都输入一长串的路径多少有些麻烦,用shell来执行是不错的方式. 首先将export命令保存至export.sh文件,然后将文件修改为可执行权限,最后运行 source export.sh[2]即可.由于子shell对变量的修改无法影响到父shell,因此需要采用source或者.

python中交换两个变量值的方法

a = 4b = 5 #第1种c = 0c = aa = bb = c #第2种a = a+bb = a-ba = a-b #第3种a,b = b,a print("a=%d,b=%d"%(a,b)) 原文地址:https://www.cnblogs.com/xhcdream/p/8159349.html

C语言如何交换两变量值?5大方法告诉你!

写在前面: C语言中交换两个变量值的操作经常会用到,也有不少人提问诸如不用临时变量怎么交换两个变量值的问题,今天我们在这里进行一个总结,也算是对这个问题的统一回复,我一共总结了5种方法(名字都是我自己取的,不当之处还请批评指正),希望大家看完有所收获. 1.临时变量法 方法解释:采用临时变量的方法,作为中间过渡,这是最简单也是大家最容易想到的方法,此法在各种场合应用极多,应该熟练掌握. #include<stdio.h> int main(void) { int a=1,b=2,tmp; tm

获取oracle sql语句中绑定变量值的方法

在诊断 sql的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到sql语句当中,用原来的sql构成select语句(带where条件),实际的执行一下,看一下选择性如何. 本文就是说获取其绑定变量值的方法.本文的编写得到枯荣长老的帮助,在此表示感谢. 本文适用于与oracle 10G或者更高版本的db. alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql_

iOS中TableView小技巧

摘要: TableView是ios开发中经经常使用到的控件,这里统一记录一下开发中遇到的经常使用小技巧,不断探索更新.也希望大家能够告诉我很多其它经常使用的小技巧啦~一起进步 1.去除多余的列表线条 原始的TableView在没有数据的行也会显示一条条的线条,不太美观,用一行代码能够解决,一般放在ViewDidLoad中 self.tableView.tableFooterView = [[UIView alloc] init]; 详细原理还没弄懂.知道的麻烦不吝赐教一下~ 2.选中列表条目后取

ORACLE获取SQL绑定变量值的方法总结

  本文总结一下ORACLE数据库中如何获取SQL绑定变量值的方法,在SQL优化调优过程中,经常会用到这方面的知识点.在此梳理.总结一下,方面日后查找.翻阅. 方法1:查询V$SQL V$SQL视图中的BIND_DATA字段用来存储绑定变量的值,但是从这个视图查询绑定变量的值,有很大的局限性: 1: 它的记录频率受_cursor_bind_capture_interval隐含参数控制,默认值为900,表示每900秒记录一次绑定值,也就是说在900内,绑定变量值的改变不会反应在这个视图中.除非你调