我有一些基本的怀疑,猜猜有人会帮助我。
请参阅此问题:Update ULabel immediately while downloading files
我尝试使用performSelectorOnMainThread
,它在另一个类中调用updateProgress方法,但标签没有更新。
但现在我已经使用了像
这样的通知[[NSNotificationCenter defaultCenter] postNotificationName:@"updateProgress" object:nil userInfo:nil];
似乎在调用方法并更新UILabel。虽然我的问题得到了解决,但我想知道为什么上述performSelectorOnMainThread
对我来说没有成功?任何具体原因?
答案 0 :(得分:1)
您进行performSelectorOnMainThread
调用的类和updateProgress
方法需要位于同一个类中。如果没有,(在您的情况下),在调用performSelectorOnMainThread
的类中创建一个方法,并将其重定向到另一个类的updateProgress
。
答案 1 :(得分:0)
performSelectorOnMainThread
可用于在主线程中运行某些代码。它似乎不是一种在另一个类上调用方法的方法(即使你可以使用它来调用另一个类上的方法,如果你有类的工作实例)。如果您在其中一个类中使用API调用,则可能必须使用单独的线程来执行API调用,因为它会阻止主线程(对于使用您的应用的用户来说,这不是很友好)。所以在ios中你必须只从主线程调用UIKit。
NSNotification
用于获取事件调用。我的意思是它会在发生观察者注册的特定事件时通知观察者。
希望这会对你有所帮助。