(iphone)什么不应该';关于UIView,不能在后台线程中完成吗?

(iphone)什么不应该';关于UIView,不能在后台线程中完成吗?,iphone,uiview,background-thread,Iphone,Uiview,Background Thread,我知道并听说大多数与UI相关的操作都不应该在主线程之外的线程中完成。 我还知道您可以更新UIView派生类的非视图相关数据成员(您添加的) 我想知道下面的操作是否可以在后台线程中执行 allocing UIView 带/不带(CGRectZero或只是init)帧信息的初始化UIView 修改UIView的帧/图像(UIImageView的)属性 正在修改NSObject派生类的图像属性。(将UIImage视为数据) 使用子视图方法访问子视图 等等。。关于这个问题是否有明确定义的文档 谢谢您不应

我知道并听说大多数与UI相关的操作都不应该在主线程之外的线程中完成。
我还知道您可以更新UIView派生类的非视图相关数据成员(您添加的)

我想知道下面的操作是否可以在后台线程中执行

  • allocing UIView
  • 带/不带(CGRectZero或只是init)帧信息的初始化UIView
  • 修改UIView的帧/图像(UIImageView的)属性
  • 正在修改NSObject派生类的图像属性。(将UIImage视为数据)
  • 使用子视图方法访问子视图
  • 等等。。关于这个问题是否有明确定义的文档
    谢谢

    您不应该在后台线程中执行任何与视图相关的操作。您列出的所有项目都不应在后台线程中完成。如果您要为MVC正确分解应用程序,则视图应仅包含指示其显示方式的项目。因此,任何与一个人有关的事情都应该只在主线中


    所有数据操作都应该驻留在模型中。它可以根据性能需要进行线程化。只是要注意,您发送任何消息来更新主线程上的数据操作UI。这包括通知。它们在创建它们的同一线程上被发送。所以在发送主线程时很容易忘记切换到主线程

    谢谢你的回答,4号不是很好吗?将UIImage*定义为自定义类的成员,并从其他线程设置/获取变量。是的,确实如此。抱歉,我将UIImage误读为UIImageView。可以在后台线程中读取图像并对其进行处理,然后将其传递给主线程进行显示。只需确保您使用的图像处理库也是线程安全的。