MacDev 板


LINE

大家好,我有一个初阶的问题。 我有一个Fraction类别 我在类别里定义一个函式 -(BOOL) isEqualTo: (id) object 我另外有帮Fraction写了一个目录Comparison 里面也有定义一个函式 -(BOOL) isEqualTo: (Fraction *) f 我在main.m里面没有导入Fraction+Comparison.h 但我在呼叫isEqualTo:的时候 它却会去跑Comparison里的函式 而且有跑出警告 似乎是说Comparison的函式把Fraction的override掉了 但是我没有导入这个目录 我试过呼叫目录里的其他函式无法执行 还有这两个函式不是不一样吗?怎麽会override? 这个是我的原始档 https://db.tt/pVConWpC --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.76.64.68
1F:→ uranusjr:这和 objc_msgSend 背後的实作有关, 总之 category 如果 01/02 08:55
2F:→ uranusjr:进行 method overriding 通常效果会是全域 01/02 08:56
3F:→ uranusjr:总之除非你有复写内建类别的特殊需求, 否则最好不要这样 01/02 08:57
4F:→ uranusjr:使用 category; 苹果的文件有明确 discourage 这件事情 01/02 08:58
所以意思是如果我用的函式如果category里面也有定义 我有reference该category 但不管有没有import 它都会去跑category的那个函式吗? 而且一个引数类型是Fraction指标 一个是id 引数名称也不同 还是会被覆写?
5F:→ darktt:它的判断依据是Method名称,它是不管引数的 01/02 12:58
书上是说一般好像要 method name, return type, argument number, argument return types 都一样,才有override发生 所以只要method name一样就会被override吗? 还是category的情况比较特殊?
6F:→ likesea:你的书是哪一本?我的书不是这样写的.......... 01/03 11:00
Programming in Objective-C, 5th, page 171 You can define a new method with the same name to replace the inherited method... A method defined with the same name as that of a parent class replaces, or overrides, the inherited definition. Your new method must have the same return type and take the same number and type of arguments as the method you are overriding. 所以它後面这句是错的吗?
7F:→ howdiun:因为你用id所以会覆写 01/03 19:16
8F:→ howdiun:对不起我错了OTZ 01/03 19:24
9F:→ howdiun:书中讲的应该不是指category 01/03 19:26
10F:→ howdiun:inherited是指继承 01/03 19:28
嗯 这段是在继承的章节里提到 因为读到category的时候不知道为什麽 没有import的category里的函式会自己跑 而且override掉main implementation里的函式 两个函式也没有像书上说的完全一样 不过我查了资料似乎它不会管类型 板友也说它不会管引数名字 和书上说的好像不同 ※ 编辑: ishuen 来自: 211.76.64.68 (01/03 19:40)







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灯, 水草

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

TOP