1

我有一些基本的疑问,猜想有人会帮助我。

请参考这个问题:下载文件时立即更新 ULabel

我试过使用performSelectorOnMainThread,它在另一个类中调用 updateProgress 方法,但标签没有更新。

但现在我已经使用了类似的通知

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateProgress" object:nil userInfo:nil];

这似乎正在调用该方法并更新 UILabel。即使我的问题解决了,我想知道为什么上面performSelectorOnMainThread的方法对我不起作用?有什么具体原因吗?

4

2 回答 2

1

您进行performSelectorOnMainThread调用的类和updateProgress方法需要在同一个类中。如果没有,(在您的情况下),在performSelectorOnMainThread被调用的类中创建一个方法并将其重定向到updateProgress另一个类。

于 2012-07-10T11:58:31.730 回答
0

performSelectorOnMainThread用于在主线程中运行一些代码。它似乎不是在另一个类上调用方法的方法(即使如果您有该类的工作实例,您也可以使用它在另一个类上调用该方法)。如果您在其中一个类中使用 API 调用,则可能必须使用单独的线程来执行 API 调用,因为它会阻塞主线程(这对使用您的应用程序的用户不利)。所以在 ios 中你必须只从主线程调用 UIKit。

NSNotification用于获取事件调用。我的意思是它在发生观察者注册以获得通知的特定事件时通知观察者。

希望这对您有所帮助。

于 2012-07-10T11:29:05.013 回答