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