SQLite3 C/C++编程接口介绍

老版本的SQLite编程接口很简单,只有5个接口。随着新功能的增加,新版本的SQLite有185个编程接口。 但是核心API还是很容易理解的。本文介绍一些核心的API接口和对象。

1. 核心对象
数据库连接对象: sqlite3
prepared_statement对象: sqlite3_stmt

严格的讲 sqlite3_stmt对象也不是必须的, 另外两个封装了qlite3_stmt的接口sqlite3_exec和sqlite3_get_table可以代替sqlite3_stmt对象完成数 据存取工作。 但是理解sqlite3_stmt对于充分使用SQLite有很大帮助。
继续阅读“SQLite3 C/C++编程接口介绍”

XCode 里的 gdb 命令

  1. break NUM               在指定的行上设置断点。
  2. bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
  3. clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
  4. continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。
  5. display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
  6. file FILE               装载指定的可执行文件进行调试。
  7. help NAME               显示指定命令的帮助信息。  继续阅读“XCode 里的 gdb 命令”

苹果面试应聘人员的15道最趣味性题目

谷歌在招聘员工和工程师时,往往会问应聘者有关技术方面的问题。苹果却大不相同,总是会司会问一些脑筋急转弯风格的问题,提出一些与硬件规格相关的问题, 此举似乎更多的是希望从潜在的员工身上挖掘更多的创造力。苹果的这些问题不仅针对技术人员,甚至还针对销售人员和其他特殊人员。

继续阅读“苹果面试应聘人员的15道最趣味性题目”

@property (nonatomic, assign) 是什么?

assign: 简单赋值,不更改索引计数(Reference Counting)。 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 retain的实际语法为: 说了那么麻烦,其实接下来的话最重要: ?如果你不懂怎么使用他们,那么就这样 -> 使用assign: 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等) 使用copy: 对NS... 继续阅读

Vim 配置文件 vimrc

1.替换方法
替换对应的vimrc文件,定制自己的vimrc
/etc/vimrc                  替换此文件;
/home/lmy/.vimrc     只对当前用户有效;

Ubuntu9.10:替换/etc/vim/vimrc,可以在新立得软件包管理器,查看vim到安装路径;
CentOS5.3:替换/etc/vimrc,vim安装目录:/usr/share/vim/vim70;

taglist.vim、winmanager.vim、supertab.vim等插件copy到相应到位置plugin目录;

1.1 vim错误

Taglist: Exuberant ctags (http://ctags.sf.net) not found in PATH. Plugin is not loaded.
通过新立得安装“ctags”

1.2 SuperTab代码补全

下载插件http://www.vim.org/scripts/script.php?script_id=1643
将supertab.vim拷贝到/usr/share/vim/vim72/plugin/
需要补全代码时用”tab”

继续阅读“Vim 配置文件 vimrc”

常见的SVN错误

#, c-format
msgid “”
“Failed to mark ‘%s’ absent: item of the same name is already scheduled for ”
“addition”
msgstr “无法将“%s”标记为不存在: 同名项目已加入增加调度”
msgid “Destination directory of add-with-history is missing a URL”
msgstr “add-with-history 的目标目录缺少 URL”
msgid “Destination URLs are broken”
msgstr “目的 URL 无效”
msgid “No fetch_func supplied to update_editor”
msgstr “没有为 update_editor 提供 fetch_func”
msgid “Bad copyfrom arguments received”
msgstr “接收到非法的 copyfrom 参数”
继续阅读“常见的SVN错误”

iPhone应用程序生命周期

那么UIApplicationMain函数到底做了哪些事情呢?这个函数主要负责三件事情:
1)从给定的类名初始化应用程序对象,也就是初始化UIApplication或者子类对象的一个实例,如果你在这里给定的是nil,那么系统会默认UIApplication类,也就主要是这个类来控制以及协调应用程序的运行。在后续的工作中,你可以用静态方法sharedApplication 来获取应用程序的句柄。
2)从给定的应用程序委托类,初始化一个应用程序委托。并把该委托设置为应用程序的委托,这里就有如果传入参数为nil,会调用函数访问 Info.plist文件来寻找主nib文件,获取应用程序委托。
3)启动主事件循环,并开始接收事件。
上面是UIApplicationMain函数的工作,接下来一个问题是应用程序视图的显示、消息的控制怎么办?下面就是UIApplication(或者子类)对象的职责,这个对象主要做下面几件事:
1)负责处理到来的用户事件,并分发事件消息到应该处理该消息的目标对象(sender, action)。
2)管理以及控制视图,包括呈现、控制行为、当前显示视图等。
3)该对象有一个应用程序委托对象,当一些生命周期内重要事件(可以包括系统事件或者生命周期控制事件)发生时,应用程序通知该对象。例如,应用程序启动、内存不够了或者应用程序结束等,让这些事件发生时,应用程序委托去响应。
继续阅读“iPhone应用程序生命周期”

viewDidLoad, viewWillDisappear, viewWillAppear等区别

viewWillAppear:
Called when the view is about to made visible. Default does nothing
视图即将可见时调用。默认情况下不执行任何操作

viewDidAppear:
Called when the view has been fully transitioned onto the screen. Default does nothing
视图已完全过渡到屏幕上时调用

viewWillDisappear:
Called when the view is dismissed, covered or otherwise hidden. Default does nothing
视图被驳回时调用,覆盖或以其他方式隐藏。默认情况下不执行任何操作
继续阅读“viewDidLoad, viewWillDisappear, viewWillAppear等区别”