applicationDidFinishLaunching错误的地方为UIImageView设置图像?

时间:2009-04-01 20:39:46

标签: iphone

我发现了这个:

applicationDidFinishLaunching(UIApplicationDelegate协议的委托方法)似乎是在我从nib文件中完全加载视图之前调用的。因此,我在iPhone模拟器中启动应用程序后,我一整天都在尝试更改UIImageView的图像,但没有任何反应。

然后我写了一个小动作方法,按下按钮即可调用。然后它发生了:工作!

因此,applicationDidFinishLaunching委托方法对于在应用程序真正“准备好”之后必须完成的事情来说并不是正确的地方。我猜想有更好的东西等待笔尖完全加载。但是哪里?什么?

2 个答案:

答案 0 :(得分:6)

  

我认为有更好的东西等待笔尖完全加载。但是哪里?什么?

对于特定应用的内容,例如全局设置,偏好设置等,-appDidFinishLaunching是正确的位置。

对于UIView特定的东西,通常在UIVIewController子类中使用-viewDidLoad方法。它几乎是唯一可以保证加载nib文件,初始化IBOutlets并附加IBActions的地方。

这与Mac OS X世界不同,-awakeFromNib就是这样做的。

答案 1 :(得分:1)

嘿直到你的观点和他们的视图控制器实例化你无法修改他们的ui。但是,只是为了您的问题,您始终可以将uiimageview声明为app delegate类的属性,并在appDidFinishLaunching事件中初始化它。但那是最糟糕的做法。在具有有限内存的iPhone上总是延迟加载,即:仅在UI实际需要之前和之前初始化对象。理想情况下,您应该在要使用此UIImageView的视图的viewDidLoad事件中执行此操作。

applicationDidFinishLaunching通常用于数据库文件检查,打开数据库连接,填充全局变量,任何其他应用程序范围逻辑,检查可用的Internet连接等内容。