Objective-C代码注释和文档输出的工具和方法

代码注释可以让代码更容易接受和使用,特别是在大型项目合作开发或模块开发中。Objective-C中也有一些很方便的注释插件和文档生成工具。本文推荐两个开源软件:VVDocumenter注释工具和appledoc文档生成工具。

阅读全文

并发编程之Operation Queue

随着移动设备的更新换代,移动设备的性能也不断提高,现在流行的CPU已经进入双核、甚至四核时代。如何充分发挥这些CPU的性能,会变得越来越重要。在iOS中如果想要充分利用多核心CPU的优势,就要采用并发编程,提高CPU的利用率。iOS中并发编程中主要有2种方式Operation Queue和GCD(Grand Central Dispatch)。下面就来先来说一下Operation Queue。

阅读全文

64位与Tagged Pointer

在Mac OS X 10.6(Snow Leopard)中开始支持64位,如今最新版本iPhone 5s也开始采用了Arm64架构。在64位化的过程中,其中一个比较关键的改进就是,Mac OS 10.7(Lion)和iOS 7的64位环境先后引入了Tagged Pointer。下面就简单地来介绍一下Tagged Pointer,在介绍Tagged Pointer之前有必要介绍一下指针地址对齐概念和64位环境的一些变化。

阅读全文

博客搬家到Octopress

之前一直在用Wordpress博客框架来写博客,一直没换过。但最近发现很多开发朋友都在使用Octopress,据说是一个面向黑客和开发者的博客,所以也跟风用上了Octopress。几经折腾终于把以前Wordpress的内容搬到了Octopress。

阅读全文

用AppleScript在Mac系统下实现按键精灵的功能以及在游戏中的运用

什么是AppleScript

AppleScript是Mac系统提供的一个脚本语言,这个脚本语言简单易读,稍微懂一点脚本语言就可以快速学会了。AppleScript可以让我们的日常工作流程化,简化繁琐的固定输入,自动化完成一般的日常工作。
AppleScript提供了很多很多强大的功能,本文就只简单的介绍一下如何用它来实现类似Windows下按键精灵的功能。

阅读全文

Objective-C语言在Category中实现属性

做开发时我们常常会需要在已经实现了的类中增加一些方法,这时候我们一般会用Category的方式来做。但是这样做我们也只能扩展一些方法,而有时候我们更多的是想给它增加一个属性。由于类已经是编译好的了,就不能静态的增加成员了,这样我们就需要自己来实现getter和setter方法了,在这些方法中动态的读写属性变量来实现属性。一种比较简单的做法是使用Objective-C运行时的这两个方法:

1
2
void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
id objc_getAssociatedObject(id object, const void *key);

阅读全文

iOS5网页视图(UIWebView)中的输入框不能弹出键盘的问题

项目开发时,发现有时候在网页视图中的输入框获得焦点后,却不能弹出键盘。而且全部都是在iOS5的系统中出现了这个问题,iOS6中运行完全是正常的,而且即使是在iOS5中,其他的UITextView和UITextField仍然可以正常地弹出键盘。我仔细了看了一下代码,发现对UIWebView的一些操作和键盘弹出并没有什么关系。我看了一些UIWebView的一些资料,然后发现了这个问题:UIWebView要能弹出键盘,那么它所在的window必须是key window。

阅读全文

TableView中嵌套一个ScrollView有时导致ScrollView无法滚动

TableView中嵌套ScrollView导致ScrollView无法滚动

开发时,经常会在一个TableView中嵌套一个横向滚动ScrollView,当ScrollView进行滑动时,TableView中展示的信息也会需要相应的改变,那么有时就需要重新载入TableView的数据(reloadData)。这时当ScrollView连续滚动多次,经常会出现ScrollView滚动不了。在控制台上同时会出现以下日志信息:

1
Ignoring call to [UIPanGestureRecognizer setTranslation:inView:] since gesture recognizer is not active.

阅读全文

iOS 5中使用UIAppearance来自定义应用的外观

做App时,我们经常需要自定义一些界面展现,来适合我们App的内容,或来使App看起来更漂亮,有时我们不得不写大量的自定义控件来达到这个目的。iOS 5新增了UIAppearance协议,使得自定义风格简单方便了很多,通过UIAppearance协议,我们快速的修改系统内置的控件的外观,也可以自己定义一些可自定义外观的控件。

阅读全文

Unix系统中设置文件的扩展属性

Unix文件系统中对单个文件提供了很多属性,比如创建时间、文件大小、修改时间等,这些信息都保存在文件系统中的inode节点中,获取这些属性并不需要读取文件,所以获取速度是很快的。在开发过程中常常会使用这些属性,但更多的时候我们需要一个自定义的属性,来保存我们需要的一些值。比如我们给文件定义一个有效期,或者给文件加一个特殊标记等。

阅读全文