objective-c中的C#样式类扩展

时间:2012-04-13 14:37:52

标签: objective-c objective-c-category class-extensions

我只是在用C#获得相当多的经验后才学习objective-c。我非常想念的一件事是能够在一个单独的项目中编写扩展方法,我可以在所有项目中引用它。这是一些天真的c#:

public static bool IsShortString(this string s) {
    return s.length <= 3;
}

在Visual Studio中,我只能添加引用using,而bam myString.IsShortString()将是一种相当无用的方法。

所以我想我想写一个静态库,但我不知道我要从哪里开始。

另外一个问题,如果我编写这个静态库,我将能够使用一个#import指令在库中的各个文件中使用所有方法,还是我必须单独导入每个头?

2 个答案:

答案 0 :(得分:1)

objective-c中最接近的是categories

This也是一个很好的类别教程。

答案 1 :(得分:1)

您要查找的内容称为“类别”,它允许您向现有类添加一些其他方法。检查参考http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

您可以创建自己的工具包,这是一个包含您所做类别的静态库。通常的做法是创建一个头文件,其中包含lib中所有头的导入,所以在使用它时,你只需要

#import "libName.h"

此外,在创建包含类别的静态库时,将-all_load-ObjC链接器标志包含在项目中非常重要。