我有很多类,我的很多项目都在使用它们。其中一些类必须访问我创建的其他一些特殊类。因为我想让这些类与其他类一样独立,所以我不希望#import行跨越不属于一起的导入类。我想访问这些类的信息,而不必使用#import行。
Apple有一些特殊的东西可以在不导入任何内容的情况下访问。例如:
[[UIApplication sharedApplication] delegate]
或
[[UIScreen mainScreen] bounds]
如何创建这样的类。我可以简单地做的课程
[[MyClass sharedClass] property]
或
[[MyClass sharedClass] runThis]
并可以访问它。没有任何#import行。
注意,因为我不是在谈论一个普通的单身人士。单身人士,您还必须导入其文件。
这可能吗?
答案 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
文件。