我遇到了一個情況,我已經找到單獨的文件中以下兩種實現方式:目標C鏈接程序作用域
ClassA.m
@implementation ClassA
int _x = 0;
@end
ClassB.m
@implementation ClassB
int _x = 0;
@end
當我編譯後,連接器將聲明:
objective c dupli美食符號__x ....
我的解決方案是將兩個變量都標記爲static
。
那麼,Classes的所有成員變量是否都會被壓縮到符號表中,而它們的實現類名卻被預先佔用(除非將它們標記爲靜態)?我很難相信,否則我會認爲使用static
將是規則,而不是例外...
啊!我對語言細節有點新,我一直在iOS應用上盜用一段時間,只是遇到了這個問題。我記得對自己說:「嗯,他們爲什麼要複製'@interface'中的變量似乎浪費了我的時間=) – ThaDon 2012-01-12 17:26:39
所以在'@interface'中定義變量的正確模式,然後初始化它們的值在'initWithNibName'中(對於UIViewController類) – ThaDon 2012-01-12 17:35:27
對於iOS來說,使用最近的開發工具* *可以*實際在'@ implementation'塊中聲明實例變量;只需將它們包裝在大括號中。實現ClassA {int _x = 0;} @ end' – 2012-01-12 17:43:33