some knowledge

注意
关于cornerstone无法上传library文件的问题 
上面是我要添加的library文件,网上提供的方法是

在CornerStone的菜单栏里面 View->ShowIgnoreItems
把library标记为Add就可以上传了
.a文件默认被标记为可忽略的文件,有些不需要传到SVN的文件也可以在CornerStone通过ignore来处理 











闪退的原因
我想一般用户所谓的秒退应该就是程序crash了。 

从开发的角度来讲一般有以下几个原因: 

1.操作了不该操作的对象,野指针之类的。 

2.对内存警告处理不当。 

3.主线程UI长时间卡死,被系统杀掉。 

4.程序内部异常逻辑没处理好。 

5.sdk版本差异没处理好。


6.app load时间过长,也会造成闪退

我遇到的闪退
》秒退发生在覆盖安装之后,因为旧版本app的Core Data数据格式与新版app不同,新版程序再读取旧版数据会直接crash。而读取core data数据一般在第一个界面的viewwillapear中执行,所以就直接表现为秒退。
》野指针的错误,导致秒退。 
在准备新手引导时,载入资源的路径为了图方便,做了本地化(NSLocalizedString),版本更新时,刚好翻译修改了这个字符串的翻译,导致路径找不到,由于这个模块没有做好异常处理app一开机就crash了。 
测试时,所有的ios设备,所有的升级,所有的系统(ios 3.1 之后的版本)都测试通过了。 
但就是有一个国家的语言版本没有测试。结果这个地区更新了的程序都崩溃了。
 
1、@dynamic与@synthesize的区别
     @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize和@dynamic都没写,那么默认的就是                  @synthesize
     @synthesize的语义是如果你没有手动实现setter和getter方法,那么编译器会自动为你加上这两个方法。
     @dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自动生成。(对于readonly的属性只需提供getter即可)。假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,但是当程序运行到instance.var =someVar,由于缺setter方法会导致程序崩溃;或者当运行到 someVar = var时,由于缺getter方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。
posted @ 2016-01-06 14:26  kunzir  阅读(243)  评论(0编辑  收藏  举报