iOS梦工厂

iCocos——不战胜自己,何以改变未来!

性能优化小结

| Comments

  1. 用ARC管理内存 ARC(Automatic Reference Counting, 自动引用计数)和iOS5一起发布,它避免了最常见的也就是经常是由于我们忘记释放内存所造成的内存泄露。它自动为你管理retain和release的过程,所以你就不必去手动干预了。 除了帮你避免内存泄露,ARC还可以帮你提高性能,它能保证释放掉不再需要的对象的内存
  2. 在正确的地方使用reuseIdentifier 这个方法把那些已经存在的cell从队列中排除,或者在必要时使用先前注册的nib或者class创造新的cell。如果没有可重用的cell,你也没有注册一个class或者nib的话,这个方法返回nil。
  3. 尽可能使Views不透明 如果你有不透明的Views,你应该设置它们的opaque属性为YES。 (opaque)这个属性给渲染系统提供了一个如何处理这个view的提示。如果设为YES, 渲染系统就认为这个view是完全不透明的,这使得渲染系统优化一些渲染过程和提高性能。如果设置为NO,渲染系统正常地和其它内容组成这个View。默认值是YES。

Xcode配置文件

| Comments

一个xcodeproj文件,其实是一个目录,它的格式大体上是这样的:

这里写图片描述

有的文件,比如user.mode1v3,在没有多个用户操作项目的时候,是没有的。Apple并没有提供.xcodeproj文件的文档,而且它也没有准备提供,更坑爹的是,xcodeproj的格式、内容都是随时可变的,比如一个Xcode版本上来,可能其目录就会变化,而没有任何通知。这可苦了那些为.xcodeproj开发每三方库的同学,不仅要一点一点摸索各个文件的内容,修改方法,还要忍受Apple没有任何通知地修改格式。

Stackoverflow中这位就在抱怨苹果开发人员的傲慢:

http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects/12021580#12021580

EXC_BAD_ACCESS无处不在

| Comments

这种错误可以说是每次写代码都会遇到的,所以如果是你你会怎么解决呢,如果不知道那么请往下看 EXC_BAD_ACCESS, objc_msgSend,

此类报错往往来的莫明奇妙.

原因往往是内存过度释放导致, 即多写了release;

至于是哪里多写了release, 很难查知,

出现这种情况, 也就是对指针对象的过度释放,导致次指针为野指针报错, (注意:如:[nil release] 操作空指针是不会报错的,在java中是有问题, [野指针 release] 报错 crash 很危险,)解决中bug,有很多中,暂时简单的说下几种简单的:

一: 在xcode中Run,Stop 右边也就是选择设备的地方左边找到

苹果审核指南

| Comments

审核指南(修改部分红色字体标出):

1.条款和条件

  • 1.1为App Store开发程序,开发者必须遵守Program License Agreement (PLA)、人机交互指南(HIG)以及开发者和苹果签订的任何其他协议和合同。以下规则和例证旨在帮助开发者的程序能获得App Store的认可,而不是修改或删除任何其他协议中的条款。

2.功能

常见设计模式总结

| Comments

ios开发学习中,经常弄不清楚ios的开发模式,今天我们就来进行简单的总结和探讨~

(一)代理模式

  • 应用场景:当一个类的某些功能需要由别的类来实现,但是又不确定具体会是哪个类实现。
  • 优势:解耦合
  • 敏捷原则:开放-封闭原则
  • 实例:tableview的 数据源delegate,通过和protocol的配合,完成委托诉求。 列表row个数delegate 自定义的delegate

教你怎么显示gif图片

| Comments

方法一:第三方

// 网络图片
//  NSData *urlData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.chinagif.com/gif/part/boy/0045.gif"]]; 

// 本地图片 
NSData *localData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"run" ofType:@"gif"]]; 

GifView *dataView = [[GifView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) data:localData];  
[self.view addSubview:dataView];

系统相关检测

| Comments

iOS系统版本的不断升级的前提,伴随着用户使用设备的安全性提升,iOS系统对于App需要使用的硬件限制也越来越严格,App处理稍有不妥,轻则造成功能不可用用户还不知道,重则会造成App Crash。

当用户在App启动时,看到弹出来的一条条“XXX 请求访问您的位置” “XXX 请求访问您的通讯录” “XXX 请求访问您的日历” “XXX 请求访问您的摄像头” 等一系列消息时,用户觉得不耐烦的同时,也会由于一时的安全考虑而把相应的功能给屏蔽掉,这还只是开始,当用户真正在使用对应功能的时候,就会出现一连续的奇怪现象,比如数据显示异常:明明通讯录里面有信息,却总是加载不出数据;有的甚至是直接Crash。

下面,笔者将会综合性地把上述硬件的授权检测,一一地详细列出,并给出相关示例代码:

iOS生命周期

| Comments

控制器(View)生命周期

当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序

1、 alloc                                   创建对象,分配空间
2、init (initWithNibName) 初始化对象,初始化数据
3、loadView                          从nib载入视图 ,通常这一步不需要去干涉。除非你没有使用xib文件创建视图
4、viewDidLoad                   载入完成,可以进行自定义数据以及动态创建其他控件
5、viewWillAppear              视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了
6、viewDidAppear               视图已在屏幕上渲染完成