我希望您能就以下代码在IOS 5及更高版本中访问全局变量、创建应用程序的用法发表意见
ProjectAppDelegate *appDelegate = (ProjectAppDelegate *)[[UIApplication sharedApplication] delegate];以上是否被认为是面向对象的编程?
发布于 2013-01-16 16:35:54
我不会问它是否被认为是面向对象的编程。
我认为您真正要问的是,将全局变量放在AppDelegate中,然后使用一行代码访问程序中任何地方的变量(例如不同的视图控制器)是否是一种好的编程风格
ProjectAppDelegate *appDelegate = (ProjectAppDelegate *)[[UIApplication sharedApplication] delegate];AppDelegate实际上只是一个“监听器”类。这个类有一些委托方法,当应用程序改变状态时会调用这些方法,比如在启动、进入后台、终止等过程中。这是你的应用程序响应这些应用程序状态改变的机会,应该这样使用。
将全局变量放在AppDelegate中似乎很有用,因为AppDelegate实际上是一个共享类(单例),可以在应用程序的任何位置访问它。然而,这仍然不能使其具有保存全局变量的意图。
下面是一个示例:如果要在AppDelegate中实现CoreLocation来获取用户的位置,则可以从项目中的任何其他类访问用户位置数据。最后,这三种方法都可以工作,这取决于您如何构建应用程序。
但是,我会尽最大努力使AppDelegate特定于响应应用程序状态的更改。我会避免在AppDelegate中放太多的全局变量,因为这不是AppDelegate的目的。
https://stackoverflow.com/questions/14353445
复制相似问题