所有的UI操作,都要切换到主线程中进行.否则,会发生莫名其妙的错误.
在主线程中,runloop默认是开启状态的。非主线程中,如果要用到runloop,必须手动开启runloop。关于runloop知识。
对于常见的EXEC_BAD_ACCESS,EXC_BAD_INSTRUCTION,错误,一般都是因为访问已经被release的对象造成的。尤其是在一个线程中访问另外一个线程的autorelease库中的对象,尤其要注意此类问题。
严格遵守iphone 内存管理手册,对于不是由你创建的对象,不要越权release,否则,可能会导致程序crash.有时,一些看起来非常严重的bug,在经过N过次努力,多种思路尝试fix之后,再回头分析bug产生的原因,你会发现,造成这个严重bug的原因,很可能是你违反了一个众所周知的规则引起的.这个规则你非常清楚,熟悉,但就是在coding的时候,稍不留神违反了它.于是就带来了灾难性后果.
除了面向对象的cocoa外,iphone编程不要忘记非面向对象的Core Foundation。 面向对象库里很多没有的功能,可以尝试在Core Foundation里找找。披如:RSA算法,MD5算法,SHA1算法,AES加密算法等,cocoa对象库里并没有相应的实现,但在core foundation里,均有相应的实现。NSString类里没有的字符串编码GBK,GB2312,GB18030等,在 CoreFoundation里,能找到相应的编码。建立socket连接,获得输入流和输出流时,也需要使用Core Foundation里的CFNetwork api。等等。
通过设置NSZombieEnabled参数,有非常有效帮助解决内存释放错误。
在消除某个对象时,如果为该对象设置了delegate,则需要先将delegate设成nil,这是一种良好的代码习惯。
在3.0 的Simulator上使用Instruments 检测内存泄漏时,无法看到函数名,只能看到一些地址指针.在3.1,3.1.2,3.1.3的simulator都正常,能够正常地看到是在哪个函数中存在的内存泄漏.
通过Nib文件加载viewcontroller的各种UI控件时时,在viewDidLoad函数里,viewController的控件才能使用。在viewcontroller的构造函数里,nib里的控件都还没有完成链接构造呢。
iPhone程序崩溃不要着急。可以结合使用Console和objc_exception_throw可以快速定位根源所在。
在CFNetwork中,有时候使用CFWriteStreamWrite方法写数据时,会导致该现成被长久block住。原因:在 CFWriteStream不能接受数据时,写数据了。具体解决办法:在CFSriteStream收到异步的 kCFStreamEventCanAcceptBytes通知时,再开始写数据。此时可避免CFWriteStreamWrite导致线程被block 的情形。
使用Eavesdrop 抓取网络数据包。
在Iphone上有两种读取图片数据的简单方法: UIImageJPEGRepresentation和UIImagePNGRepresentation. UIImageJPEGRepresentation函数需要两个参数:图片的引用和压缩系数.而UIImagePNGRepresentation只需要图片引用作为参数.通过在实际使用过程中,比较发现: UIImagePNGRepresentation(UIImage* image) 要比UIImageJPEGRepresentation(UIImage* image, 1.0) 返回的图片数据量大很多.譬如,同样是读取摄像头拍摄的同样景色的照片, UIImagePNGRepresentation()返回的数据量大小为199K ,而 UIImageJPEGRepresentation(UIImage* image, 1.0)返回的数据量大小只为140KB,比前者少了50多KB.如果对图片的清晰度要求不高,还可以通过设置 UIImageJPEGRepresentation函数的第二个参数,大幅度降低图片数据量.譬如,刚才拍摄的图片, 通过调用UIImageJPEGRepresentation(UIImage* image, 1.0)读取数据时,返回的数据大小为140KB,但更改压缩系数后,通过调用UIImageJPEGRepresentation(UIImage* image, 0.5)读取数据时,返回的数据大小只有11KB多,大大压缩了图片的数据量 ,而且从视角角度看,图片的质量并没有明显的降低.因此,在读取图片数据内容时,建议优先使用UIImageJPEGRepresentation,并可根据自己的实际使用场景,设置压缩系数,进一步降低图片数据量大小.
分享到:
相关推荐
总结起来,多年iOS开发经验总结中提及的这些知识点涵盖了在iOS开发过程中常见的一些问题和解决方法。通过使用UIKit和Foundation框架提供的API,开发者能够解决界面设计、多线程操作、数据类型比较、日期时间计算等...
在iOS开发领域,无论是初学者还是经验丰富的开发者,持续学习和总结都是非常重要的。这份"iOS开发总结"文档可能涵盖了从基础概念到高级技术的各种知识点,旨在帮助开发者提升技能和解决问题。 首先,iOS开发主要...
一本自己总结的开发资料,很基础,希望给大家带来帮助
本文将从标题、描述、标签和部分内容四个方面对 iOS 开发程序员应届生简历进行分析和总结。 一、标题:iOS 开发程序员应届生简历 标题表明了这个简历的主要内容,即 iOS 开发程序员应届生简历。这个标题简单、明确...
在iOS开发中,经验与技巧的积累对于提升项目的质量和效率至关重要。本文将分享一些资深iOS开发者在实践中总结的关键知识点。 首先,我们来讨论内存管理。在iOS开发中,内存管理是优化应用性能的关键。特别是在涉及...
在这份文档中,作者分享了他在iOS开发领域一年的工作经验,总结出了超过100个常用的知识点,并且提供了实例代码以供调试和参考。这些知识点对于iOS开发入门者和希望通过实践加深理解的开发者来说非常有帮助。文档中...
iOS开发是一个广阔而充满活力的领域,掌握了基础知识和技能后,读者可以尝试更多复杂的项目,提升自己的编程能力和项目经验。希望本文能为读者提供有价值的参考,帮助其在iOS开发领域取得更大的进步。
总结起来,通过研究“ios开发Puff游戏源码”,我们可以学习到iOS游戏开发的基础知识,包括Xcode的使用、游戏引擎的工作原理、面向对象编程、资源管理、事件处理和兼容性问题。这不仅有助于提升我们的编程技能,还...
在iOS开发领域,无论是新手还是有经验的开发者,都需要不断学习和总结。本文将从Xcode快捷键、Objective-C编程语言的关键点等方面进行深入探讨,旨在为新手提供一个全面的入门指南。 首先,Xcode作为iOS开发的主要...
### 一年iOS开发工作总结知识点详解 #### 一、前言 本文档旨在分享作者从事iOS开发一年以来积累的经验与心得,特别聚焦于100多个常用的小知识点,并附带了可运行实例代码以便读者能够更好地理解和实践。这些知识点...
这是某位开发人员总结一年ios开发的经验总结,有很多值得学习的!
标题“ios开发心得.rar”和描述“ios开发心得”暗示了这份文档可能包含了作者在iOS应用开发过程中的经验、技巧和教训,这对于初学者和有经验的开发者来说都是宝贵的资源。在iOS开发中,涉及到的知识点广泛且深入,...
在iOS开发领域,这是一份个人学习经验的总结,涵盖了从入门到进阶的关键知识点。iOS开发主要使用Swift编程语言,这是一种由Apple公司推出,旨在提升开发效率,同时保持代码简洁和安全的语言。Swift语法清晰,易于...
【标题】:“ios与mac开源项目和学习资料总结iOS开发技巧共33页”这个标题表明,这是一份...这份33页的PDF资料全面覆盖了iOS开发的多个方面,无论你是初学者还是有经验的开发者,都能从中受益,提升自己的专业技能。
- 常见的设计模式如单例、工厂、代理、装饰器、观察者等在iOS开发中的应用。 10. **安全性**: - App Transport Security (ATS):理解HTTPS的强制性及其配置。 - 数据加密:了解AES、RSA等加密算法在iOS中的应用...
以下是从不同维度总结出的一系列iOS开发最佳实践。 #### 最佳学习方法实践 - **选择合适的书籍:** 在学习之初,挑选适合自己的书籍至关重要。建议从基础入手,逐步过渡到高级主题。例如,《iOS Programming: The ...
**Swift-JHChart:iOS开发中的图表神器** Swift-JHChart是专为iOS开发者设计的一款强大的图表库,它提供了一套简洁、功能丰富的API,使得在iOS应用中集成各种图表变得异常简单。这款库以其高度可定制化的特点,能够...
- **实际项目经验分享**:通过分析具体游戏项目的开发过程,学习如何将理论知识应用于实践。 - **常见问题解决方法**:总结开发过程中遇到的问题及其解决方案,帮助读者少走弯路。 #### 八、未来发展趋势 - **技术...