0

我有很多我的项目使用的类。其中一些类必须访问我创建的其他一些特殊类。因为我想让这些类尽可能独立于其他类,所以我不想让#import 行来交叉导入不属于一起的类。我想访问这些类的信息,而不必使用#import 行。

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

[[UIApplication sharedApplication] delegate]

或者

[[UIScreen mainScreen] bounds]

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

[[MyClass sharedClass] property]

或者

[[MyClass sharedClass] runThis]

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

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

这可能吗?

4

2 回答 2

2

您看不到这些类的导入的原因是您将 UIKit 框架作为项目的一部分,它有效地将这些类的 .h 文件导入到您创建的每个类中。但是,就分离而言,可以通过利用 Objective-c 中的动态调度和动态类型来执行您所描述的操作,但是您将失去编译时错误检查。

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

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

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

[objectOfSomeClassWeDidntImport performSelector: @selector(amethodWeKnowExists)]
于 2013-10-21T04:46:08.123 回答
1

你能行的....

projectName-Prefix.pch只需在文件中进行导入

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

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

于 2013-10-21T05:14:58.250 回答