在线程中处理变量的问题

时间:2012-01-09 06:29:45

标签: objective-c multithreading cocoa mutex reloaddata

我正在开发一个显示文件系统内容的应用程序。我有两种类型的显示器

1)OutlineView

2)IKImagebrowserView

用户可以在视图之间切换。我在全局变量currentview中维护当前视图对象,因为多个控制器需要访问它。

现在,只要用户切换视图,一个控制器(在线程上运行)就会更改此全局变量。但是,我有另一个控制器(取决于一些数据库操作)使用

连续刷新当前视图
[currentview reloadData];

现在每当我在视图之间快速切换时,这些线程中的currentviewobject都会出现问题,应用程序崩溃了。 崩溃报告显示该应用程序在该行崩溃

[currentview reloadData];

有没有解决方案?

1 个答案:

答案 0 :(得分:1)

尝试使用

@synchronized(self)
{
   [currentview reloadData];
}

这将产生一个独占锁,这将阻止其他线程同时访问它。