构建自包含的类

时间:2013-10-21 04:36:04

标签: iphone ios ipad cocoa-touch cocoa

我有很多类,我的很多项目都在使用它们。其中一些类必须访问我创建的其他一些特殊类。因为我想让这些类与其他类一样独立,所以我不希望#import行跨越不属于一起的导入类。我想访问这些类的信息,而不必使用#import行。

Apple有一些特殊的东西可以在不导入任何内容的情况下访问。例如:

[[UIApplication sharedApplication] delegate]

[[UIScreen mainScreen] bounds]

如何创建这样的类。我可以简单地做的课程

[[MyClass sharedClass] property]

[[MyClass sharedClass] runThis]

并可以访问它。没有任何#import行。

注意,因为我不是在谈论一个普通的单身人士。单身人士,您还必须导入其文件。

这可能吗?

2 个答案:

答案 0 :(得分:2)

您没有看到这些类的导入的原因是因为您将UIKit框架作为项目的一部分,这有效地将这些类的.h文件导入每个类你创造。但是,通过利用objective-c中的动态分派和动态类型,可以在分离方面执行您所描述的操作,但是您将失去编译时错误检查。

例如,我有一个UIApplication委托的子类,其名称为“managedObjectInstance”,其NSManagedInstance属性。我不导入此子类的.h文件,而是使用valueForKey:方法,如下所示:

[((NSObject*)[UIApplication sharedApplication].delegate) valueForKey: @"managedObjectContext"];

NSObject强制转换只是因为sharedApplication的delegate属性是一个id,这意味着它不一定符合KVO。要在不引发警告的情况下调用您知道的类上存在的方法,可以使用performSelector:函数族,如此

[objectOfSomeClassWeDidntImport performSelector: @selector(amethodWeKnowExists)]

答案 1 :(得分:1)

你可以做到....

只需在 projectName-Prefix.pch 文件

中进行导入即可

并在任何地方使用导入文件的内容。

您可以在Resources文件夹中找到.pch文件。