2012-06-27 27 views
1

我可以調用類變量 「ID」(例如的NSString * ID)? 一切似乎工作,但我不能讓[ID發佈在dealloc方法。我使用對象/鍵構造從XML解析器創建這個類的實例,所以我需要這個被稱爲ID。我已經試過[self.id發佈]和寄託都工作,除了分析顯示我一個警告說「屬性返回一個Objective-C的對象與+0保留計數」和「對象的引用計數錯誤減量那在這一點上不是由呼叫者擁有「。所以我想知道我是否在做非法的事情。非常感謝你。目標C IOS類變量叫做 「ID」

回答

3

id在objective-c中是一個預定義的類型。你或許應該命名爲不同的東西,像idString

這是同樣的事情,試圖名稱,如if

2

id變量int或其他Objective-C的關鍵字是在Objective-C中的關鍵字。這是一個弱類型變量標識符,類似於JavaScript中的var

+0

其實,在ARC ,默認情況下id是'__strong' :)也應該注意,你不能把任何東西放到'id'中,並期望它能夠工作。 –

+0

弱類型與弱引用不一樣。這是一個弱類型。我希望我能有一個弱引用弱類型:'(__weak ID)' –

+0

我這是有點開玩笑的。我只是說,你的答案可以使用一些澄清 –

1

不要這樣做。

  • 這是一個毫無意義的名字 - 的ID什麼
  • 它擦出了語言的關鍵字,並勢必會有一些不良影響的地方
  • 它傷害可讀性,人們不得不懷疑你是指在任何點什麼代碼
+0

是的,我知道。我試過這個,因爲我是通過xml解析器(從外部xml讀取的,我無法控制)用set ojbect/keys構造這個類的bulding istances。我有超過30個變量。我想我會在解析器中使用if([isEqualString:@「id」])來更改此特定屬性的名稱。謝謝。 – user1427835

+0

實際上,變量名稱和類型定義(其'的id'是一個)(除非這已經在Xcode 4.3,這是我還沒有的數據改變)存在於在Objective-C單獨的名稱空間。我剛剛看到了一個關於這個的啓發性文章,但我現在找不到它。 – echristopherson

+0

@echristopherson仍然離開點1和3 ... – jrturton