Re: [討論] protocol 與 java 的 interface

看板MacDev作者 (←這人是超級笨蛋)時間10年前 (2014/02/14 21:11), 編輯推噓3(3014)
留言17則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《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 發現它連繼承都沒有豈不崩潰了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.161.94.175 ※ 編輯: uranusjr 來自: 218.161.94.175 (02/14 21:13)

02/14 21:55, , 1F
我是在問它的'價值',而且我提出一個答案來確認:可讀性
02/14 21:55, 1F

02/14 21:57, , 2F
尤其在第二種case,沒宣告但實作,這點上宣告就是加強可讀
02/14 21:57, 2F

02/14 22:00, , 3F
動態語言在CPU愈來愈快時,我沒意見,但在保密上就要問問
02/14 22:00, 3F

02/14 22:00, , 4F
compiler 可以破壞 symbol table,變成代號,雖然有反組譯
02/14 22:00, 4F

02/14 22:01, , 5F
工具程式,但畢竟很難解讀;動態語言經常把函式名稱以字串
02/14 22:01, 5F

02/14 22:01, , 6F
儲存,那該不會一下就被人追出函式原型來..
02/14 22:01, 6F

02/14 22:10, , 7F
動態語言 != 直譯語言
02/14 22:10, 7F

02/14 23:51, , 8F
VC 在實作 DLL 時,它仍然是 compiler,不是直譯器
02/14 23:51, 8F

02/14 23:52, , 9F
但你可以去 dump dll,可以發現動態連結之所以可以動態連結
02/14 23:52, 9F

02/14 23:52, , 10F
它的 function name 是整個曝露出來的;它不'完全'是直譯
02/14 23:52, 10F

02/14 23:52, , 11F
器,但沒說它不能取用直譯的做法
02/14 23:52, 11F

02/14 23:55, , 12F
fn = GetProcAddress(handle, "fnName") 這道指令要能存在
02/14 23:55, 12F

02/14 23:56, , 13F
它就必需保留函式名稱(且是字串)和函式的對應方法
02/14 23:56, 13F

02/15 21:31, , 14F
dynamic typing 跟 interpreted language 是兩碼子事
02/15 21:31, 14F

02/16 15:56, , 15F
仔細看了一下,第二個問題應該和protocol無關...?
02/16 15:56, 15F

02/16 15:57, , 16F
你是想問在xcode裡面不用在.h檔或.m的interface裡宣告
02/16 15:57, 16F

02/16 15:57, , 17F
就可以在.m檔直接實作而且使用嗎
02/16 15:57, 17F
文章代碼(AID): #1I_XNqkq (MacDev)
文章代碼(AID): #1I_XNqkq (MacDev)