2010-04-14 52 views
2

在Objective-C的ApplicationDelegate.h中放置变量和方法签名的主要目的是什么?通过这样做,所有这些方法和变量都可以被另一个视图控制器类看到?这是关键吗?应用程序的要点代理类

而且:每个项目里面是否只有一个应用程序委托类?

回答

2

“通过这样做,所有这些方法和变量都被另一个视图控制器类看到了吗?是这样吗?”

当然,任何导入应用程序控制器头部的类都可以访问公共属性和方法(以及ivars),但这适用于任何类,而不仅仅是应用程序委托。

在应用程序委托中放置一些在应用程序中需要的重要对象和方法是很常见的。这样,是的,这通常是你看到应用程序委托类定义的变量和方法的原因。

这有时候是有道理的,但它可以很快恶化为坏设计。您应该确保不要将应用程序委托用作某个篮子,您可以在应用程序中抛出所有共享状态和功能。我正在使用一些代码,现在有人这样做,而且它的极其难以改变和重构功能。

这只是使用全局状态的所有问题的一个版本。简而言之,您应该分析功能并将其分为单独的类或一组类。尽量让您的应用程序代表尽可能苗条!

编辑:...并阅读Matt Gallagher's post在这个问题上。

3

应用程序委托(并且是的,每个应用程序只有一个)是Cocoa和Cocoa Touch应用程序中Controller层的主干。它的主要功能是在某些情况下(如应用程序终止,应用程序打开等)定制NS/UIApplication的行为。它也常用于将代表分配给其他响应者(例如表视图,大纲视图等)。在小应用程序中,它通常充当大多数界面元素的委托和数据源,但正如Felixyz指出的那样,如果应用程序增长,这可能会迅速恶化。

+0

标识应用程序委托类中的变量和方法????? – user310000 2010-04-14 13:55:13

+0

@ ahmet732:那是什么样的评论? – Felixyz 2010-04-14 13:58:24

+1

@Felixyz他错过了一个'?',当你想象有六个时,它更容易理解。 – 2010-04-14 14:08:35

相关问题