MacDev 板


LINE

学 java 时,学到 interface 这东西取代了 C 的函式指标 同事在用了後觉得不错 反而在 C++,再也不用函式指标了 大量的使用 interface 说真的一开始给我带来很大的门槛 但等我也学 Java,被逼着学会後 的确觉得这样的架构还挺美妙的~ 怎麽说呢... 嗯,我一次用一整组函式指标组成的 interface 而不是一个一个指标去注册 这样在多个函式具有一种架构时,更可以看出它们的关系 VC 的 interface 其实就和 class 一样 只是 RD 要有自律,不要在 base class 去 implement 里面的函式 保留起来做纯虚拟 class, 那就是 interface 了 VC 支援多重继承, Java 不支援;但 Java 可以"继承" interface 在我看来就是这样,所以 继承 两字我要打引号 也许有人会说是 implement 吧.. 到了 Object C, 看到 protocol 看来看去它就和 java 的 interface 一样嘛 (如果要说不一样,那我就学不会它了) 可是它的检查好松喔.. 1.我宣告我的 class 使用某 protocol 然後不实作它 Compile OK!! 2.我不宣告我的 class 使用某 protocol,但我实作它 然後在某个要求传入实作 protocol 物件的场合,把我这个 class 物件传进去 Compile 也 OK!! Holy 谢~ 你给我这样在 C++ or Java 玩玩看 Compiler 一定不会饶过你的 结果 Object C 把这轻轻放下了 至此,我只好这样去理解了: protocol, 是提高可读性而已啊,让你知道 "这里有个规矩可以遵守" 其实你就把它当个 base class 看就好 你要不要在你的 class 里,打个 < > 符号,把 protocol 写在里面宣告 宣告後要不要实作 都随便你了啊~~ -- 活动/美食计划 兰屿 鱼白 胜兴车站 星月天空 武陵 草岭古道 嘉义阿里山小火车 保龄球  司马库斯 手包水饺 日月潭缆车 合欢攻顶 马祖 盐山 南庄 澎湖 溪头/松林町 南投天梯 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.197.63
1F:推 Blueshiva:Protocal定义里面可以指定一定要实作哪些method 02/14 16:28
2F:→ Blueshiva:然後,Obj-C的精神是message传递,每个所谓的 method 呼 02/14 16:29
3F:→ Blueshiva:叫,都是呼叫一个固定的function(底层的C实作),参数带 02/14 16:30
4F:→ Blueshiva:你要呼叫的"method特徵",所以只要被呼叫的object有对应 02/14 16:30
5F:→ Blueshiva:的method特徵实作,就会被叫出来执行 02/14 16:31
6F:→ Blueshiva:基本上,你要理解Obj-C的设计,你需要先知道,Obj-C设计 02/14 16:32
7F:→ Blueshiva:的时候"没有C++,没有Java,它是纯C去做出物件的行为" 02/14 16:32
你是说, Obj-C 在设计的时候, C++ 还没发明出来是吗? 因为这句也可以理解成 "没有使用 C++" 但 C++ 可以用前置处理器做掉,然後 .cpp 就变 .c, 再交由标准 C compiler 去跑 所以如果不是 "C++ 还没发明出来", 而是 "没有使用 C++" 那我就无法理解了
8F:→ Blueshiva:然後就比较能体会为什麽要这样设计 02/14 16:33
如果是"当时还没有 C++", 那我就懂为何它要自称 Object 语言了 XD 因为 C++ 也是 Object 语言 就好像一家在浊水溪的米取名叫浊水溪米,但明明其他很多米也是浊水溪米 那我会觉得"你怎麽把大家的名字拿去注册了啊,根本先讲先赢嘛" --- 那有个效率上的问题,在 wiki 上我竟查到,它用讯息效率也不差.. 啊?怎麽做到的 C++ 的做法其实只是语法符号 基本上 class 可以用 struct 取代 function pointer 在 C 时代早就有了 只要在 strcut 内摆入 fp struct 就可以运作得和 class 一样 当然, private, public 等等权限检查,那是没有了 可以说 C++ compiler 带来的'必要性差异',就在权限检查 所以 C++ 置换成 C,是绝对可行;而且有一个很标准的模型 Obj-C 的 head file 可以分两三处各别宣告 XDDD 所谓 category,老实说这是我从前的梦想 我一直想要临时增加一些宣告,但不要给其他 .c/cpp 档看到 继承到不同的子类别再各别写? 但所有功能在 class 内都要有 private 引用的能力 可以说全都该写到 base class 内 然後再依不同状况 public 出去 可是子类别都必需 include 父类别,而 .h 就会公开 虽然 obj 可以不公开,但也被看到很多了 category 似乎可以解决这个问题(我还没很清楚) 其实以前看过 C# 简介(但我没学),好像就有这个能力 .h 可以拆开到几个地方 用 message 是可以理解了,那当然做得到 但程式又怎麽快得起来 :P messge 怎麽找得到 code 来执行 目前我的理解是像微软的 DLL, 动态的东西就是要这样,甚至函式都有保留完整 symbol 然後才可以去做字串比对,找出来执行 字串比对,就不快啦~ 但如果它不想快,只想当高阶语言 (反正电脑会愈来愈快) 那就很容易理解了 ※ 编辑: HuangJC 来自: 60.251.197.63 (02/14 16:51)
9F:→ yuanruo:class有一个method_list 会根据你传入的SEL做比较 02/14 20:28
10F:→ yuanruo:SEL就你的方法名 它是用一个优化过的hash table 的set 02/14 20:30
11F:→ yuanruo:所以找到class的SEL後再根据你IMP的位置去找 02/14 20:31
12F:→ yuanruo:我记得这个set有原本系统dyld给你创的cache set,让你能 02/14 20:36
13F:→ yuanruo:让你优先查找系统你导入framework的method 和决定是否需要 02/14 20:37
14F:→ yuanruo:括展你自己加入方法的method_list 02/14 20:38
15F:推 Blueshiva:你去查一下程式语言的发展史,不就知道ObjC是"不用C++" 02/15 01:06
16F:→ Blueshiva:(老实说我不是很确定这句话是啥意思)还是"没得用C++"了? 02/15 01:06
> 贝尔实验室的比雅尼·斯特劳斯特鲁普博士在20世纪80年代发明并实现了C++ > 1980年代初,Stepstone 公司的 Brad Cox 与 Tom Love 发明了 Objective-C from wiki 要更考古才知道答案,不然我以为 1980 就是80年代,差不多差不多 要是说"战",那是了,两派工程师不知会不会吵起来 其实我不是要选择;吃人头路我已经没有选择了(可以只凭 C++ 写出来吗?) 而是去搞懂它的差异,也比较能运用它 话说回来,我买了一本 Object C 的书,应该是专教语言才对 结果它还是一直提 Mac,好像除了它没人在用似的 难道市场说明了.. 咳咳 ※ 编辑: HuangJC 来自: 60.251.197.63 (02/15 01:28)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP