使用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学习之常见问题记录的更多相关文章

  1. 【原】iOS学习之事件处理的原理

    在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...

  2. 【原】iOS学习47之第三方-FMDB

    将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...

  3. iOS学习路线图

    一.iOS学习路线图   二.iOS学习路线图--视频篇       阶 段 学完后目标 知识点 配套学习资源(笔记+源码+PPT) 密码 基础阶段 学习周期:24天       学习后目标:    ...

  4. 黑苹果-IOS学习的开始

    深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...

  5. 【原】iOS学习之SQLite和CoreData数据库的比较

    1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...

  6. [转]ios平台内存常见问题

    本文转自CocoaChina,说的满详细的: 链接地址:http://www.cocoachina.com/bbs/read.php?tid=94017&keyword=%C4%DA%B4%E ...

  7. 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据

    原文:  http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...

  8. IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)

    IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...

  9. ios学习资料(一)

    IT社区: http://www.cnblogs.com/ http://www.csdn.net/ http://www.51cto.com/ http://www.cocoachina.com/ ...

随机推荐

  1. C#操作Xml:通过XmlDocument读写Xml文档

    什么是Xml? Xml是扩展标记语言的简写,是一种开发的文本格式.关于它的更多情况可以通过w3组织了解http://www.w3.org/TR/1998/REC-xml-19980210.如果你不知道 ...

  2. 在LINQ中实现多条件联合主键LEFT JOIN

    我昨天遇到一个LINQ下使用多条件比对产生LEFT JOIN的问题,经过深入研究,终于解决了,也让我学到了新的东西,特地拿来分享. 实例:有一张库存异常变更视图KCYD,仓库ID[Ckid]和物品ID ...

  3. python_random随机

    在数据清洗,评估 ,抽验等等过程中,经常有这样的应用场景 : 需要在一个大的数据集合中随机出来样本,进行人工评估.为了保证足够随机,借助脚本来实现. 下面一个脚本  ,用于应对这种应用场景. 使用方法 ...

  4. projecteuler---->problem=19----Counting Sundays

    You are given the following information, but you may prefer to do some research for yourself. 1 Jan ...

  5. 【百度地图API】暑假放假回老家——城市切换功能

    原文:[百度地图API]暑假放假回老家--城市切换功能 任务描述: 酸奶小妹放寒假啦,要从北京呼啦一下飞回重庆呢.现在百度地图API上不能直接切换城市,怎么办呢? 如何实现: 利用API先搜索到要去城 ...

  6. DevExpress的Web控件汉化方法

    原文:DevExpress的Web控件汉化方法 项目中用到devexpress的web控件,机器没有安装devexpress控件,直接在项目中引用的dev的dll,项目运行时发现都是英文界面,所以解决 ...

  7. linux Packet socket (1)简单介绍

    本文主要来自于linux自带的man packet手冊: http://man7.org/linux/man-pages/man7/packet.7.html 平时常常使用的INET套接字提供的是7层 ...

  8. ThinkPHP框架设计与扩展总结

    详见:http://www.ucai.cn/blogdetail/7028?mid=1&f=5 可在线运行查看效果哦 导言:ThinkPHP框架是国内知名度很高应用很广泛的php框架,我们从一 ...

  9. 将已有的工程项目添加到Xcode到Git管理中

    在Xcode中创建工程的时候,我们很容易的可以将新创建的工程添加到Git中,如图: 但是如果是本地已经有的工程,那该如何添加到Git中呢? 首先终端进入到该工程的目录. 然后: git init gi ...

  10. ADS-B 雷达 显示终端5.8

    改动日志 1  更新背景地图. 增加了全国范围内的国际航路.区域航路信息,全部航路信息来自网络及中国民用航空局公布的公开资料:航路採用深蓝色画笔绘制航路中包括有航路代码.高度及报告点信息.代码及报告点 ...