动态包含类或实例化对象而不包括类

时间:2011-03-24 18:48:21

标签: iphone objective-c class

基本上我有一大堆类,它们都是UIView的子视图。

该应用程序是一种(某种)幻灯片应用程序。我希望能够列出幻灯片可以在plists中使用的潜在“路线”。

因此,我可能有100个课程,我不想将所有这些课程都包括在其中,我可能会使用其中一个课程。

那么有办法解决这个问题吗?我可以以某种方式实例化一个类吗?

或者我将不得不包括我将要使用的所有潜在课程?

是否有像include all这样的“全球包含”......在这里抓着稻草。 :P

由于 汤姆

4 个答案:

答案 0 :(得分:3)

为什么你会有数百个班级?听起来你有大约一个自定义类,它代表幻灯片。

您对此问题的评论会有所帮助。考虑将幻灯片与其内容分开。您可以拥有一个幻灯片类,它提供所有幻灯片共有的功能,包括管理一个或多个内容对象的功能。然后你会创建一堆不同的内容类:电子表格,动画图表,清单等等。幻灯片将查看其数据以确定要实例化的内容类。

如果您有所有内容类的公共基类,则幻灯片类只需要了解基类。内容基类可以充当所有内容类的管理器。你可以给它一个像-contentForData:(NSData*)data这样的工厂方法,为给定的数据返回一个合适的内容对象。滑动类不需要了解除内容基类之外的任何内容,因此这种实现了实例化内容类的目标,而不必在幻灯片类中包含所有标题。当然,内容基类仍然需要了解所有内容类。

基类需要知道它的子类,但子类是从基类派生的,这有点棘手。我认为你可以通过在内容子类中使用转发@class声明来解决这个问题。

答案 1 :(得分:1)

如果您正在使用该类,则必须知道它响应的消息集。将该信息分解为公共超类或协议,然后您只需要使用它。

答案 2 :(得分:0)

  

我可以在不以某种方式包含它的情况下实例化一个类吗?

我想这是不可能的,因为在使用class类型的变量之前,编译器肯定会在当前作用域中看到class定义。

答案 3 :(得分:0)

如果我正确理解了您的问题,您需要一个地方来放置您的#include指令,以便项目中的每个类都可以访问它们。您可以在ProjectName_Prefix.pch文件中执行此操作。每个源代码文件中都包含任何#include或#import语句。

相关问题