1.Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter
NSURL取得的地址和NSRUL的string内容形式一样,但是在使用的时候NSURL和NSString是有区别的,NSRUL前面带有file:\\,而NSString没有这些东西,所有在做nsdata数据存储的时候需要注意
2.CGImageRelease(cgImage)在使用的时候注意release掉
3. __weak typeof(self ) welf = self,避免在多线程或者block里面被循环引用,导致内存不能释放掉
4.图形绘制的时候需要已end方法结束
5.在做图形处理或者大量数据处理的时候,需要把这些处理放后台操作,起子线程来完成,而把需要在UI界面展示的时候放在主线程来做
6.在做视图控制器的时候,可以在视图控制器里面加一个调度器,利用这个调度器去管理需要处理的各种方法
7.封装方法的时候,需要打破那种一个方法就完成功能的思想,把方法拆分,方法包含子方法,子方法复用
8.碰到需要逻辑处理的地方,逻辑的优先做,比较节省资源,逻辑处理完成后才开始做其他消耗资源的处理,避免先处理资源,最后发现逻辑判断后该资源无效,从而降低了运行效率
9.在运用点击事件的时候,可以在点击事件的方法里面添加代理方法,然后代理会在另一个对象(或者控制器里面)执行,从而达到这个控件控制另一个对象的响应事件
- -(BOOL) isKindOfClass: classObj 用来判断是否是某个类或其子类的实例
- -(BOOL) isMemberOfClass: classObj 用来判断是否是某个类的实例
- -(BOOL) respondsToSelector: selector 用来判断是否有以某个名字命名的方法(被封装在一个selector的对象里传递)
- +(BOOL) instancesRespondToSelector: selector 用来判断实例是否有以某个名字命名的方法. 和上面一个不同之处在于, 前面这个方法可以用在实例和类上,而此方法只能用在类上.
- -(id) performSelector: selector
SEL sel = @selector (start:) ; // 指定action
if ([obj respondsToSelector:sel])
{ //判断该对象是否有相应的方法
[obj performSelector:sel withObject:self]; //调用选择器方法
}
使用[[UIApplication sharedApplication] keyWindow]查找应用程序的主窗口对象