2012-07-29 43 views
0

我在目標C以下代碼:的extern傳遞數據從一個實例向另一不同的類的

class1.h:

... 
extern NSString global; 
... 

class1.m:

... 
    NSString *global; 
    @implementation: 
    .. 
-dostuff{ 
    [email protected]"hi"; 
} 
    .. 
    @end 
    ... 

class2.m:

#import "class1.h" 
    ... 
-printval:{ 
    NSlog(@"%@",global) 
} 
    ... 

After我在第1課中調用方法,然後在第2課中調用方法,嘗試打印全局。然而這不起作用......我不理解這個權利嗎?

回答

0

這不完全正確。關鍵字extern用於告訴編譯器全局(非靜態)變量在另一個模塊(文件)中聲明。所以你應該嘗試這樣的事情。

class1.h:

... 
NSString *global = nil; 
... 

class1.m:

... 
    extern NSString *global; 
    @implementation: 
    .. 
-dostuff{ 
    [email protected]"hi"; 
} 
    .. 
    @end 
    ... 

class2.m:

#import "class1.h" 
... 
extern NSString *global; 
-printval:{ 
    NSlog(@"%@",global) 
} 
    ... 
+0

mugetsu:我想這也將是很好的澄清,你真的需要這個字符串作爲全局?如果您只需要來自Class1實例的可用於Class2實例的數據,則應該給它一個訪問器,如[a @property語句](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual /ObjectiveC/Chapters/ocProperties.html#//apple_ref/doc/uid/TP30001163-CH17-SW1),在Class1中。 – 2012-07-29 06:09:16

+0

是的,你是對的,那是解決這個問題的一個更好的方法。不過,瞭解extern如何工作仍然很重要,所以我只是想我會解釋這一點。 – 2012-07-29 15:05:54

+0

並指定標題extern:P – 2012-07-29 15:06:18

相關問題