Re: [討論] protocol 與 java 的 interface

作者: uranusjr (←這人是超級笨蛋)   2014-02-14 21:11:13
※ 引述《HuangJC (吹笛牧童)》之銘言:
: 到了 Object C, 看到 protocol
麻煩你寫對好嗎
: 看來看去它就和 java 的 interface 一樣嘛
: (如果要說不一樣,那我就學不會它了)
: 可是它的檢查好鬆喔..
動態語言 vs 靜態語言
開戰囉 (拉椅子)
: 1.我宣告我的 class 使用某 protocol
: 然後不實作它
: Compile OK!!
會過, 可是會噴 warning
如果有 warning 對你而言是 OK 那我也不想說什麼了
: 2.我不宣告我的 class 使用某 protocol,但我實作它
: 然後在某個要求傳入實作 protocol 物件的場合,把我這個 class 物件傳進去
: Compile 也 OK!!
: Holy 謝~
其實你連實作都不用啊, compile 照樣過給你看(同樣會噴 warning)
動態 vs 靜態, fight!
我覺得你應該去學個 Python 或 Ruby 之類的
這世界很大, 其實 Objective-C 算很「正常」的語言
這種細節反應就這麼大, 哪天寫到 JavaScript 發現它連繼承都沒有豈不崩潰了
作者: HuangJC (吹笛牧童)   2014-02-14 21:55:00
我是在問它的'價值',而且我提出一個答案來確認:可讀性尤其在第二種case,沒宣告但實作,這點上宣告就是加強可讀動態語言在CPU愈來愈快時,我沒意見,但在保密上就要問問compiler 可以破壞 symbol table,變成代號,雖然有反組譯工具程式,但畢竟很難解讀;動態語言經常把函式名稱以字串儲存,那該不會一下就被人追出函式原型來..
作者: uranusjr (←這人是超級笨蛋)   2014-02-14 22:10:00
動態語言 != 直譯語言
作者: HuangJC (吹笛牧童)   2014-02-14 23:51:00
VC 在實作 DLL 時,它仍然是 compiler,不是直譯器但你可以去 dump dll,可以發現動態連結之所以可以動態連結它的 function name 是整個曝露出來的;它不'完全'是直譯器,但沒說它不能取用直譯的做法fn = GetProcAddress(handle, "fnName") 這道指令要能存在它就必需保留函式名稱(且是字串)和函式的對應方法
作者: yr (Sooner Born Sooner Bred)   2014-02-15 21:31:00
dynamic typing 跟 interpreted language 是兩碼子事
作者: benck (小倫)   2014-02-16 15:56:00
仔細看了一下,第二個問題應該和protocol無關...?你是想問在xcode裡面不用在.h檔或.m的interface裡宣告就可以在.m檔直接實作而且使用嗎

Links booklink

Contact Us: admin [ a t ] ucptt.com