objective c 程序设计-C适合新手吗

&& & & &内存管理规则就不赘诉了,一般人都知道,无非就是谁持有谁释放。我开始也认为Objective-C内存管理规则挺简单明了。可是在项目开发中确遇到了一些问题。
&& & & &做的项目是基于网络的小游戏,大概说说系统结构:UI管理和数据是分离的,通过控制器作为联系(由控制器创建UI管理类和数据类)。底层有负责收发消息的线程,收到消息后拆包转发给控制器。控制器先处理数据,然后调用UI管理模块将处理后的数据在界面上展现。当存在UI操作的时候,调用控制器,然后由控制器处理数据后发送给服务器。
1.循环引用所导致的无法释放的问题:
&& & & &这里存在循环引用的问题,即控制器持有了UI管理类的对象引用,由于UI操作需要回调控制器,这时UI管理类又需要持有控制器的引用。当创建控制器的方法需要释放控制器时,由于UI管理器仍然持有控制器的一个引用,所以控制器对象无法被释放。
&& & & &那么如何解决这种问题呢:可以尝试在存在循环引用的时候使用弱引用,即不增加对象的引用计数器,当然也不能释放了;可以创建1个stop方法负责主动清理控制器内部持有的引用,并在release之前调用。
&& & & &其实官方类库里面就存在了很多循环引用的问题,最典型的就是Delegate,几乎所有的Delegate都使用的是弱引用,这点要非常注意。
2.Delegate的弱引用引发的问题:
&& & & &看下面的代码:
TestDelegate* delegate = [[TestDelegate alloc] init];
UIAlertView* alertV = [[UIAlertView alloc] initWithTitle:@&title&
message:@&message&
delegate:delegate
cancelButtonTitle:@&cancel&
otherButtonTitles:@&ok&,nil];
NSLog(@&retainCount:%d&,[delegate retainCount]);
[alertV show];
[alertV release];
[delegate release];
&& & & 如果是一个初学者,你会惊奇的发现输出的retainCount等于1,点击按钮的时候程序当然要毫不犹豫的报错了。这问题好像没有简单的办法解决。只能靠程序员自己持有对象,然后再在合适的时机释放了。
好像一般的Deleage和Target都不会持有对象引用,但是NSTimer会持有。这只能靠用的时候去尝试了。就算总结出来也没什么意义。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:16549次
排名:千里之外
原创:15篇
(1)(1)(1)(7)(8)(1)(1)随笔-1013&
trackbacks-0
《Objective-C初学者指南(第2版)》基本信息原书名:Objective-C for Absolute Beginners:iPhone, iPad, and Mac Programming Made Easy,Second Edition作者: (美)贝内特(Bennett,G.) (美) 费希尔(Fisher,M.) (美)利斯(Lees,B.) [作译者介绍]丛书名: 图灵程序设计丛书出版社:人民邮电出版社ISBN:8上架时间:出版日期:2012 年10月开本:16开页码:1版次:1-1所属分类: 计算机更多关于 》》》《 》内容简介书籍计算机书籍  近年来,移动开发热潮席卷全球,苹果公司推出的ios 因其强大而完备的功能成为移动开发首选平台。要想踏上苹果移动应用开发之旅,了解objective-c 编程语言和ios 的特性是重中之重,本正是为此而写。  《objective-c初学者指南(第2版)》由浅入深地讲解了面向对象编程的基本概念、objective-c 的语法和语言特性,以xcode 集成开发环境的使用方法。本书注重实践,包含大量示例代码以及图示,鼓励开发者自己动手编写程序。每章结尾的习题会帮助读者巩固所学的知识。  《objective-c初学者指南(第2版)》是objective-c 入门的上乘指南,是移动应用爱好者的首选参考图书。目录《objective-c初学者指南(第2版)》第1章  成为优秀的ios或mac 程序员    11.1  像开发人员一样思考    11.2  完成开发周期    41.3  面向对象编程简介    51.4  操纵alice界面    71.5  总结    91.6  习题    9第2章  编程基础    102.1  和alice一起漫游仙境    102.1.1  导航菜单    112.1.2  世界窗口    112.1.3  alice中的类、对象和实例    132.1.4  对象树    142.1.5  编辑区域    142.1.6  细节区域    152.1.7  事件区域    152.2  创建一个alice应用&&登月    162.3  你的第一个objective-c程序    202.4  总结    26
.2.5  习题    27第3章  关于数据    283.1  编程中用到的数字系统    283.1.1  比特    283.1.2  字节    303.1.3  十六进制计数    313.1.4  unicode    323.2  数据类型    323.3  在alice中使用变量和数据类型    333.4  数据类型与objective-c    403.5  确定问题所在    443.6  总结    453.7  习题    45第4章  程序流的决策与计划    464.1  布尔逻辑    464.1.1  真值表    474.1.2  比较运算符    494.2  应用设计    494.2.1  伪代码    504.2.2  设计需求    514.2.3  流程图    544.2.4  示例应用的设计和流程图    554.2.5  应用的设计    554.2.6  使用循环来重复程序语句    564.3  示例应用在alice中的程序实现    584.4  示例应用在objective-c中的程序实现    604.4.1  嵌套的if语句和else-if语句    624.4.2  删掉多余字符    624.4.3  通过重构改善代码    634.4.4  运行应用    634.5  和alice道别    644.6  总结    644.7  习题    65第5章  基于objective-c的面向对象编程    665.1  对象    665.2  什么是类    675.3  类的设计    685.3.1  属性的设计    685.3.2  方法的设计    705.3.3  类的实现    715.4  继承    765.5  为什么使用oop    775.5.1  它无处不在    775.5.2  消除冗余代码    775.5.3  方便调试    775.5.4  方便替换    785.6  高阶课题    785.6.1  接口    785.6.2  多态    785.7  总结    785.8  习题    79第6章  学习objective-c和xcode    806.1  objective-c简史    806.2  理解语言的符号    816.3  面向对象概念    826.4  用xcode再写一个程序    866.5  总结    986.6  习题    99第7章  objective-c的类、对象及方法    1007.1  创建objective-c类    1007.1.1  声明接口和实例变量    1017.1.2  发送消息(方法)    1027.1.3  实现文件的使用    1047.1.4  方法的编码    1057.2  新类的使用    1067.2.1  创建项目    1067.2.2  添加对象    1097.2.3  完成实现文件    1117.2.4  创建用户界面    1137.2.5  连接代码    1167.2.6  运行程序    1207.2.7  充分发挥类方法的作用    1217.3  访问xcode文档    1217.4  总结    1227.5  习题    122第8章  objective-c编程基础    1238.1  集合类    1238.1.1  使用nsset    1248.1.2  使用nsarray    1258.1.3  nsdictionary    1268.1.4  确定集合元素的类型    1278.2  使用可变类    1278.2.1  nsmutableset    1278.2.2  nsmutablearray    1288.2.3  nsmutabledictionary    1298.3  创建bookstore应用程序    1308.4  引入实例变量    1348.4.1  访问实例变量    1348.4.2  使用获取方法和设置方法    1358.5  引入属性    1378.5.1  属性的使用    1388.5.2  理解惯例的重要性    1398.6  完成mybookstore程序    1398.6.1  创建视图    1408.6.2  添加实例变量    1418.6.3  添加描述    1428.6.4  创建一个简单的数据模型类    1448.6.5  更改masterviewcontroller    1478.6.6  更改detailviewcontroller    1518.7  总结    1528.8  习题    152第9章  比较数据    1539.1  复习布尔逻辑    1539.2  使用关系操作符    1549.2.1  比较数值    1549.2.2  创建示例xcode应用    1559.3  使用布尔表达式    1589.3.1  比较字符串    1599.3.2  比较日期    1619.3.3  比较的结合    1639.4  使用switch语句    1649.5  总结    1659.6  习题    166第10章  创建用户界面    16710.1  理解interface builder    16810.2  模型?视图?控制器    16810.3  人机交互界面准则(hig)    17010.4  用interface builder创建iphone示例应用    17110.4.1  使用interface builder    17410.4.2  dock    17510.4.3  库    17610.4.4  查看器窗格和选择器工具条    17710.4.5  创建视图    17710.4.6  使用插口    17910.4.7  连接动作和对象    18010.4.8  实现文件    18110.5  总结    18210.6  习题    182第11章  数据存储    18311.1  存储注意事项    18311.2  首选项    18311.2.1  首选项的写操作    18411.2.2  首选项的读操作    18511.3  数据库    18511.4  在数据库中存储信息    18511.5  开始使用core data    18611.6  模型    18811.6.1  受控对象上下文    19411.6.2  设置界面    19411.7  总结    19911.8  习题    200第12章  协议和委托    20112.1  多继承    20112.2  理解协议    20212.3  理解委托    20312.4  下一步    20412.5  总结    205第13章  内存、地址和指针    20613.1  理解内存    20613.1.1  比特、字节和基数    20713.1.2  十进制转换为二进制    20713.1.3  使用十六进制的计数法    20813.2  理解内存地址的基础    21013.3  内存的分配    21313.4  解除分配内存    21513.5  在objective-c中用arc管理内存    21713.6  没有arc的objective-c内存管理    21913.6.1  使用保留/释放模型    22013.6.2  处理隐含的保留消息和自动释放    22113.6.3  发送dealloc消息    22213.7  如果出了问题    22313.8  arc注意事项    22413.9  总结    22413.10  习题    225第14章  xcode调试器    22614.1  准备调试    22614.1.1  设置断点    22714.1.2  使用断点导航器    22814.1.3  调试基础    23014.1.4  使用调试器控件    23114.1.5  使用单步控件    23214.1.6  查看线程窗口和调用栈    23314.1.7  变量的调试    23414.2  处理代码错误和警告    23514.3  总结    239
本信息来源:
阅读(...) 评论()人民邮电出版社优秀图书:Objective-C初学者指南(第2版)
图灵程序设计丛书·移动开发系列《Objective-C初学者指南(第2版)》免费电子书下载官网免费下载,《Objective-C初学者指南(第2版)》免费电子书下载官方最新版下载-126免费网络硬盘
我的网盘文件          
好评:50.00%(0)
差评:50.00%(0)
分享给好友:复制地址
用户其它文件
最新上传文件
《Objective-C初学者指南(第2版)》免费电子书下载描述介绍:
《Objective-C初学者指南(第2版)》免费电子书下载是由上传到126网盘,供大家免费下载。
文件下载地址
电信高速下载
联通高速下载

我要回帖

更多关于 objective c pdf 的文章

 

随机推荐