所以,我得到了一個類中聲明的2個變量,我們稱之爲model.h
,並且在這個類中我初始化類Car
和Road
的實例。如果我想要Car
知道關於 road
還有什麼其他選擇比通過參考Road
到Car
在Model
在這種情況下很好嗎?Obj-C:通過引用的替代方案
回答
據我所知,傳遞指針指針並不是一個很好的設計模式,可以在整個應用程序中使用。它只保留在objective-c中,僅用於選擇少量操作,即NSError。請參閱下面的主題中的bbum的回覆。
Arguments by reference in Objective-C
來看在接受和它的作者我會說這是相當不錯的建議,但也許不是「福音」。你當然可以通過指針指向所有你想要的指針,但它可能不是最好的方法。
另一種方法是考慮你正在考慮通過引用傳遞的值(意思是指向指針),然後考慮方法/函數的設計,以便可以將這些值封裝到一個類中從你的方法/函數返回。
確實沒有其他選擇。對象是總是通過Objective-C中的指針訪問。沒有辦法聲明是變量的變量,您只能創建引用對象的變量。
我在想如果有其他替代方案,比如我如何使用Singelton等設計我的課程,但singelton在這種情況下不適合。 – 2013-05-12 01:16:10
在Objective-C中,對象總是按引用傳遞,但是可以通過仔細設計類來減輕對象的影響。
例如,NSString
和NSNumber
總是按引用傳遞,但您可以將它們視爲按值傳遞,因爲它們是不可變的。您不能更改NSString
(僅限於NSMutableString
)或NSNumber
,因此,您是按價值還是按照參考值傳遞並不重要。
同樣,複製對象並使用-isEqual:
以後比較它們可以模擬傳遞值。 NSDictionary
是否這樣 - -setObject:forKey:
複製密鑰並僅使用副本,而-objectForKey:
使用-isEqual:
和-hash
來比較密鑰。
對於你的情況,如果你的道路「地圖」是固定的,並且你不需要將道路連接回去,你或許可以使Road
對象不可變(或者至少從未在加載之後發生變異)汽車。如果你這樣做,那麼通過引用傳遞實際上是一個有用的優化,而不是等待發生的錯誤。
- 1. 通過引用傳遞密鑰和值的替代方案:
- 2. 對unique_ptr的引用的替代方案
- 3. 方案R5RS:通過引用
- 4. 替代foreach通過引用
- 5. 用於通過HTTP傳輸文件的Response.TransmitFile的替代方案
- 6. 通過dblib使用MSSQL時PDO連接的替代方案
- 7. HTMLElementVariable.animate(...)替代方案?
- 8. Nginx:more_clear_headers替代方案
- 9. VSTO替代方案
- 10. Example.com替代方案
- 11. WSO2替代方案
- 12. 替代方案deleteOnExit
- 13. android.net.wifi.WIFI_HOTSPOT_CLIENTS_CHANGED替代方案
- 14. FBML的替代方案通過Javascript SDK呈現Facebook朋友
- 15. PHP:通過引用傳遞變量的替代方法?
- 16. JOptionPane的替代方案?
- 17. JQuery Slider的替代方案?
- 18. Firebug的替代方案
- 19. Treeview的替代方案
- 20. SELECT .. IN的替代方案(..)
- 21. SendMail的替代方案
- 22. FOP的好替代方案?
- 23. Python的shlex.split替代方案
- 24. iOS3的UILocalNotification替代方案
- 25. Cookie的替代方案
- 26. FontLoader的替代方案computeStringWidth
- 27. 。Perforce的.gitignore替代方案
- 28. uibinder的替代方案I18n
- 29. 替代的解決方案
- 30. numpy.gradient的替代方案
'.h'是指示頭文件的文件擴展名 - 您不會命名實際的類Car.h或Road.h。 – Caleb 2013-05-12 00:56:34
Caleb:這是爲了清晰起見 - 因爲類通常有一個頭文件實現文件 – 2013-05-12 01:00:03
真的沒有必要 - 只需使用類名。 – Caleb 2013-05-12 01:06:40