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/ ...
随机推荐
- MVC4 + EF为Model添加单独的验证属性
可使用以下方式给Model加上相关的meta验证属性,这样实体的验证属性就不会被例如EF或其他工具自动生成的Model所替换了. using System.ComponentModel.DataAnn ...
- android 实现真正意义上的服务及源代码下载
android APP后台服务和长期server长期互动,保证实时数据,这个小项目主要实施app退出后仍然能够执行服务. 使用该系统的Intent.ACTION_TIME_TICK现,这个系统的广播每 ...
- PHP和MySQL Web开发 原书第4版 高清文字版,有目录,附带源码
PHP和MySQL Web开发 原书第4版:http://yunpan.cn/QCWIS25zmYTAn 提取码 fd9b PHP和MySQL Web开发 原书第4版源码:http://yunp ...
- jquery 直接调用 wcf,面向服务的SOA架构 ( 第二天)
在前面的基础上,我们来开始第二天编写 客户端 的东西,不过讲之前,我想告诉大家的是: 这个简单的SOA的架构,我们直接通过wcf 调用到 后台的方法, 而中间没有使用 C#代码,大大减少我们客户端的代 ...
- ssh 自动登录
工作中经常会有这样的需求场景,因为要在其它电脑上做操作, 需要从PC A ssh 到 PC B,PC A 可能是自己的工作机,PC B 可能是服务器.一般会使用 SSH 登录到 server 上再进行 ...
- css3实现色子自动翻转效果
原文:css3实现色子自动翻转效果 css3使我们能够跳出2d空间,实现3维空间的动画效果,这里给出一个自动翻转的3d色子动画效果制作过程. 第一步,首先进行HTML的布局,对于3D效果,布局有一定的 ...
- IOS中UIDatePicker
UIDatePicker 1.常见属性 /* 样式 UIDatePickerModeTime,时间 UIDatePickerModeDate,日期 UIDatePickerModeDateAndTim ...
- 生产环境使用Nginx+uwsgi部署Django
在本地运行django应用相对来说还是挺方便的,使用自带的runserver启动即可.如果在生产环境部署django,就要多考虑一些问题了.比如静态文件处理,安全,效率等等 在网上找到了不错的部署的教 ...
- 快速构建Windows 8风格应用19-基础控件II
原文:快速构建Windows 8风格应用19-基础控件II 本篇博文接着上篇博文<快速构建Windows 8风格应用18-基础控件I>介绍开发Windows 8风格应用中常用控件. Sli ...
- 深入了解jsonp解决跨域访问
在这个项目中,我们做的充分利用jsonp这是一个特点跨界,完成简单的单点登录认证和权限控制的统一.道,各有各的优点.各有各的优点,选择什么方式实现全然取决于我们自己或者项目经理的开发经验,对各种框架的 ...