看板 MacDev 關於我們 聯絡資訊
※ 引述《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)
HuangJC:我是在問它的'價值',而且我提出一個答案來確認:可讀性 02/14 21:55
HuangJC:尤其在第二種case,沒宣告但實作,這點上宣告就是加強可讀 02/14 21:57
HuangJC:動態語言在CPU愈來愈快時,我沒意見,但在保密上就要問問 02/14 22:00
HuangJC:compiler 可以破壞 symbol table,變成代號,雖然有反組譯 02/14 22:00
HuangJC:工具程式,但畢竟很難解讀;動態語言經常把函式名稱以字串 02/14 22:01
HuangJC:儲存,那該不會一下就被人追出函式原型來.. 02/14 22:01
uranusjr:動態語言 != 直譯語言 02/14 22:10
HuangJC:VC 在實作 DLL 時,它仍然是 compiler,不是直譯器 02/14 23:51
HuangJC:但你可以去 dump dll,可以發現動態連結之所以可以動態連結 02/14 23:52
HuangJC:它的 function name 是整個曝露出來的;它不'完全'是直譯 02/14 23:52
HuangJC:器,但沒說它不能取用直譯的做法 02/14 23:52
HuangJC:fn = GetProcAddress(handle, "fnName") 這道指令要能存在 02/14 23:55
HuangJC:它就必需保留函式名稱(且是字串)和函式的對應方法 02/14 23:56
yr:dynamic typing 跟 interpreted language 是兩碼子事 02/15 21:31
benck:仔細看了一下,第二個問題應該和protocol無關...? 02/16 15:56
benck:你是想問在xcode裡面不用在.h檔或.m的interface裡宣告 02/16 15:57
benck:就可以在.m檔直接實作而且使用嗎 02/16 15:57