Archive for the Objective-C Category

Objective-C – 关联引用

你可以使用关联引用模拟在已存在的类上添加对象参数,这个功能只在Mac OS X v10.6和以上版本支持

在类外添加存储

使用关联引用,你可以对一个对象添加数据而不需要修改这个类定义,这在你没有这个类的源代码时很有用,或者是为了二进制兼容的原因你无法修改这个对象的时候。

关联基于一个key,所以你可以在一个对象上添加多个关联,每个使用不同的key,关联对象也可以确保被关联的对象是否存在,至少在源对象的生命周期内(也就是说这个对象没有将被引入到垃圾回收系统的可能性)

创建关联

你可以使用方法 objc_setAssociatedObject 创建一个关联,这个方法有四个参数,源对象,key,值,关联方式,key和关联方式值得进一步说明

  • key是一个 void 指针,必须唯一,通常使用static变量
  • 方式指关联对象是否转让,保留还是复制,关联是按原子级还是非原子级,这与声明属性的元属性类似( “Property Declaration Attributes”),你可以使用一个常量(见 objc_AssociationPolicy)来指定这种联系的方式

下面的例子显示如何建立一个数组和一个字符串之间的关联

Objective-C – 定义一个类

原文:The Objective-C Programming Language: Defining a Class
翻译:Sam Sha – ycoder.com

Much of object-oriented programming consists of writing the code for new objects—defining new classes. Objective-C 中类包括两部分

  • 接口部分 - 声明方法和实例变量,类型以及他的基类
  • 实现部分- 类的实际定义部分 (包括方法的实现体)

他们通常写在两个文件中,有时候分成多个文件,通过使用一种叫做“ category”的功能。类目可以分割一个类定义或者扩展已经存在的类。详见“Categories and Extensions.”

源文件

虽然编译器不需要他们,接口和实现通常分放在两个不同的文件中,接口文件必须可以被任何使用这个类的获取

单个文件可以声明和实现多个类,然而,习惯上每个类有一个单独的接口文件,同样单独的实现文件。保持类接口的分离可以更好的反映独立实例的地位

接口和实现文件通常以类名命名,实现文件以 .m后缀,其中包含Objective-C的源代码,接口文件可以指定其他任何后缀。因为他包含在其他源码文件中,通常以 .h 后缀作为头文件。如 Recangle.h 和 Rectangle.m

Objective-C – 对象,类和消息

原文:http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocObjectsClasses.html
翻译:Sam Sha – ycoder.com

本章描述Objective-C中的对象,类和消息的原理使用和实现,还会介绍Objective-C的运行

运行器

从compile time 和 link time 到 runtime,Objective-C都尽可能遵循规范。只要有可能,它会动态的执行操作如创建对象,调用函数。这意味着这个语言不只是需要编译器,也需要运行系统去执行编译过的代码。运行系统扮演着Objective-C语言的操作系统的角色,它让语言工作。通常,你并不需要直接关心runtime,要了解更多相关功能,参阅 Objective-C Runtime Programming Guide.

对象

正如其名,面向对象程序都是围绕着对象而建立,一个对象关联数据,通过特定操作去使用和影响数据。Objective-C提供一个数据类型标示一个对象变量,无需指定这个对象的类型──这样就能允许动态输入

对象基础