2010-07-09 47 views
0

我已经为iPhone编写了几个应用程序,但它们都是以我认为是懒惰的非结构化方式编写的。将iPhone的Objective-C代码拆分为多个文件

我已经开始一个新项目并创建了几个Objective-C类(NSObject的子类)。我的问题是让我的头脑里的逻辑正确。我的结构如下

viewController.h 
viewController.m 
plotPoints.h 
plotPoints.m 
handleFeeds.h 
handleFeeds.m 

所以主文件是视图控制器,我在其头文件中包含其他类。我的问题是,在其他类文件中,例如plotPoints.m - 如果我尝试引用在视图控制器中设置的变量,则说它没有设置。我已经在plotPoints.h文件中包含了viewcontroller - 但它仍然不起作用。

以这种方式分离代码的最佳做法是什么?在这个例子中,我有一个我想在一个类中处理的webservice提要,然后在另一个类中处理这些结果并处理视图控制器中的主UI。

感谢您的任何信息。

+0

你可以减少你的代码到一个不起作用的简短例子吗?有许多选项,比如全局变量,委托,声明外部变量......作为一个附注,我建议文件名以大写字母开头,就像类名一样。 – Eiko 2010-07-09 10:25:36

+0

嗯...没有太多的代码。我会看看是否有任何我可以发布。我的班级文件实际上是大写的,重新输入时我只是懒惰! – 2010-07-09 10:47:49

回答

0

我说你的控制器不应该被引用 - 据我所知 - 外部类(plotPointshandleFeeds,顺便说一下这些应该肯定以大写字母开头)。

实际上,它应该是完全相反的,你的viewController应该使用你的外部类的方法和属性。 PlotPointsHandleFeeds不应该引用您的Controller的实例变量,而是让它将它们作为参数传递给您的方法。

+0

所以在我的视图控制器中,我应该包含外部类。这些类包含我从视图控制器调用的函数。所以如果我在视图控制器中有一个mapview,我应该在哪里声明iboutlet?目前我在viewcontroller.h文件中。我试图在plotpoints.h中声明它,但我在界面构建器中看不到它。感谢您的回复。 – 2010-07-09 10:46:47

+0

我明白了。 也许你可以尝试在另一个类中添加一个IBOutlet到你的mapview中,但是如果你这样做了,你可能需要在你的.xib中添加一个你的助手类的实例(通过从“YourFile.xib” “窗口)。 然后,你将不得不在你的ViewController中添加一个插口到你的助手类。这足够清楚了吗? – scalbatty 2010-07-09 12:27:55