編輯:這是用於靜態NSMutableDictionary,而不是類成員。我看到很多答案認爲這是班級成員,對此抱歉。感謝您的快速回復。使用Arc不保留函數參數?
我的代碼工作的一塊,但它使用了2倍,所以我寫了一個方便的功能:
- (void) initializeDictionary:(NSMutableDictionary*)mutableDict fromPathName:(NSString*)path
{
mutableDict = // get from file, init if not there.
}
然後我注意到什麼也沒有保存。逐句通過代碼,該函數創建一個字典,但「傳入」值在返回時仍爲零。這完全吹走了我對指針的理解(不要採取這種錯誤的方式,我很舒服)。但我認爲,他們的目的是讓你「通過地址」,這樣我就可以爲它指向的東西提供保溼。
由於mutableDict是「值副本」,因此ARC似乎將其擦除。我在這裏問,因爲
- 其他問題有相反的問題「爲什麼這被保留?」和
- 它看起來不正確。任何指針語言的第一個教程是「所以你可以混淆原始值」。 Arc是否真的這樣做?有沒有一個概念我沒有得到?
當然,我可能會忽略一些簡單的東西。
我似乎做回寫把戲,我發現其他地方已經解決了它:
- (void) initializeDictionary:(NSMutableDictionary* __strong *)mutableDictionary fromPath:(NSString*)path;
,並使用&打電話* DEREF更改值。它似乎遠不如優雅。
謝謝,我覺得愚蠢,不知何故忘了目標C的語法是乾淨的,並掩蓋自動引用。隨着ARC的進展,我會對ARC感到滿意......只是爲了避免它一段時間,因爲我做了Core的東西。 –