2011-04-27 88 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