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