ios学习之常见问题记录
使用Core Data的好处和缺点?
首先这是apple官方极力推荐的,使用它而不是SQLite。好处有大概这么几点:1.减少你model层的代码量,减少50%~70%。无需测试和优化。2.提供了内存缓存机制,提供了最优的内存扩展性。3.sqllite是关系型数据库,core data是面向对象的。
缺点是使用比较复杂,无法直接不能设置数据库的主键
关于为什么id是任意类型的指针?
你可以通过id指向任意对象,通过看其定义你就会理解其原理,定义如下:
ypedef struct objc_class *Class;
typedef struct objc_object {
Class isa;
} *id;
id中有一个isa变量,这个变量是用来指定响应类的方法的,每一个类都有一个特定的isa变量。也就是说当你传入不同类型时,你可以通过更改isa指向的类来实现其可以时不同类的指针。
关于报: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直接更改
frame和bounds的区别
frame和bounds是UIView中的两个属性(property)。
frame指的是:该view在父view坐标系统中的位置和大小。(参照点是父亲的坐标系统)
bounds指的是:该view在本身坐标系统中 的位置和大小。(参照点是本身坐标系统)
-(CGRect)frame{
return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height);
}
-(CGRect)bounds{
return CGRectMake(0,0,self.frame.size.width,self.frame.size.height);
}
ios学习之常见问题记录的更多相关文章
- 【原】iOS学习之事件处理的原理
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...
- 【原】iOS学习47之第三方-FMDB
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...
- iOS学习路线图
一.iOS学习路线图 二.iOS学习路线图--视频篇 阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天 学习后目标: ...
- 黑苹果-IOS学习的开始
深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...
- 【原】iOS学习之SQLite和CoreData数据库的比较
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...
- [转]ios平台内存常见问题
本文转自CocoaChina,说的满详细的: 链接地址:http://www.cocoachina.com/bbs/read.php?tid=94017&keyword=%C4%DA%B4%E ...
- 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据
原文: http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- ios学习资料(一)
IT社区: http://www.cnblogs.com/ http://www.csdn.net/ http://www.51cto.com/ http://www.cocoachina.com/ ...
随机推荐
- SpringMVC1
itRed You are never too old to set another goal or to dream a new dream. SpringMVC一路总结(一) SpringMVC听 ...
- java_代码注释风格
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templa ...
- SDUT 1124-飞跃荒野(三维BFS)
飞跃原野 Time Limit: 5000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 勇敢的法里奥出色的完毕了任务之后.正在迅速地向自己的基地撤退.但因为 ...
- 泛型委托及委托中所涉及到匿名方法、Lambda表达式
泛型委托及委托中所涉及到匿名方法.Lambda表达式 引言: 最初学习c#时,感觉委托.事件这块很难,其中在学习的过程中还写了一篇学习笔记:委托.事件学习笔记.今天重新温故委托.事件,并且把最近学习到 ...
- MySql状态查看方法 MySql如何查看连接数和状态?
原文:MySql状态查看方法 MySql如何查看连接数和状态? 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接 怎么进入mysql命令行呢? mysql的安 ...
- Android学习之 WebView使用小结
这段时间基于项目须要 在开发中与WebView的接触比較多,前段时间关于HTML5规范尘埃落定的消息出如今各大IT社区头版上,更有人说:HTML5将颠覆原生App开发 尽管我不太认同这一点 可是关于H ...
- SQL data reader reading data performance test
/*Author: Jiangong SUN*/ As I've manipulated a lot of data using SQL data reader in recent project. ...
- unity资源
unity资源集中贴 1.unity经验之谈 http://jingyan.baidu.com/article/19192ad820f17be53e570715.html 2.百度网盘,分享了一点模型 ...
- Gimp教程:制作彩色的网站横幅
效果图: Step1.新建900x200的透明图层 Step2.点选画笔工具,在左下方的设置界面进行如下: 设置画笔,动态,颜色,勾选应用抖动,然后试着在图层上画一画,调节一下画笔大小,相信你能作出如 ...
- linux下getrusage()
#include <sys/resource.h> /* Return resource usage information on process indicated by WHOand ...