关于报:error: failed to attach to process ID 0
首先,明确一下这个问题原因,无法找到所要启动应用线程。那有哪些时候会出现这个问题呢,下面分两种情况:
1.编译出错,这个就是网上很多人所说的,然后其解决方法也是大众化的,如直接删除应用,再重新运行。或者还原模拟器设置即可。
2.项目版本更新,项目文件架构更改:这个弄了整整一下午,问题原因是前后项目的可执行文件名不一样导致的。所以其解决方法就是把前后的项目可执行文件名改一致!而若使用上面的方法,则是治标不治本的,因为你无法跟用户说你把之前项目删了再更新吧!还有就是有这种情况,也就是这两天做的:就是新项目的数据库设计更改,但需要从老数据库中导出部分用户数据,这时候你如果删除项目,那也就什么都没了。这里简要说下版本更换,保持数据的做法:当你更新的时候,有一个文件夹是不会被更新置换掉的,那就是documents沙盒文件夹,所以你可以把你的项目数据库。db文件放里面。进行数据库数据迁移时,你只需要写一个适配器,把原来老数据的数据转换成你需要的新数据格式即可!(ps。判断第一次启动的方法是判断老版本的数据库文件是否存在,存在则是第一次启动,然后开始更新迁移数据,最后把老版本数据库文件删除)。
如何输出bool类型?
如你有一个 bool型 变量 : IfReadOnly ; 你想在控制台输出 它的值。 在程序中想看到他的值的地方 加入如下代码:
NSLog(@"ifReadOnly value: %@" ,ifReadOnly?@"YES":@"NO");
找不到xib文件:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;
注意此方法中nibNameOrNil是指对应的xib文件名
使用NSLog直接输出NSString,出现黄色警告:Format string is not a string literal (potentially insecure)
原因:在Xcode 4.2(iOS 5)之后,貌似苹果更新的编译器,出了支持ARC的Apple LLVM compiler 3.0。
在StackOverflow和iPhone Dev SDK查找相关答案之后,发现在最新版的编译器里面NSLog为了安全,只接受格式化的字符串,因为NSLog底层也是用printf来格式化输出的。
解决:
NSLog(language,nil);
使用addTarget时出现警报,错误:Receiver type 'SJTabButton' for instance message is a forward declaration
原因:ARC要求明显的前向引用
解决:加入相应的头文件,如SJTAbButton。h即可
关于IB的连接线方向:
有的是从控制器拖拽到视图,有的是从视图拖拽到控制器。这里说一个最简单的判断方法,如果是IBOutlet,就是从视图到控制器,如果是IBAction,就是从控制器到视图。
关于数据库String类型的日期和int类型的数据装换:
+(NSTimeInterval)dateDecode:(NSString*)dateFormat{
NSDateFormatter *dateFormatter = [[NSDateFormatteralloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
return [[dateFormatter dateFromString:dateFormat]timeIntervalSince1970];
}
xcode 设置显示欢迎画面:
有次觉得麻烦就把勾去掉,之后觉得没有更加麻烦。。
解决方法是:快捷键Command + Shift + 1直接更改