2011-04-27 90 views
0

我制作了几个Objective-C类文件。其中两个具有相同的全局变量名称。当程序从一个文件运行一个线程,但也从另一个线程的另一个文件访问代码时,该线程似乎对全局变量属于它的内容感到困惑。Objective-C,全局变量和线程

这是一个真正的问题还是我的代码错了?我似乎通过更改变量名来修复它。

+0

的threadDictionary财产你怎么知道两个线程都参与。你的代码是否创建线程? – wadesworld 2011-04-27 23:06:29

+1

如果你定义了两个具有相同名称的变量,那么你并不希望它们成为全局变量,对吗? – 2011-04-27 23:24:54

回答

3

我会去你的代码是错误的,但我认为这里有一个更基本的东西,你是误解。

一个线程本身不属于一个文件或拥有任何东西。真正发生的事情是说你有两个函数,每个文件和编译器都有一个函数(因为你的变量是别名)选择在一个文件中使用一个变量,而在另一个文件中使用另一个变量。这与线程或其他任何事情无关。

此外,如果你正在寻找一个线程局部变量,你可能想看看NSThread http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSThread_Class/Reference/Reference.html

+0

谢谢。我想知道如果编译器不以某种方式分离相同的命名全局变量。 – 2011-04-28 00:13:02