作者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