我对 Objective-C 还很陌生。目前正在将我自己的库从 C#/Java 移植到 Objective C。
我现在遇到了一个非常奇怪的问题。
我有一个NSArray
与几个Note
对象。我想转置这些注释:
//Note.h
- (Note *) transpose: (int) semitones;
//Main
NSArray *notes = [get it from somewhere];
Note *transposedNote = [[notes objectAtIndex:0]transpose:1]; //Doesn't compile
Note *transposedNote = [(Note*)[notes objectAtIndex:0]transpose:1]//Does compile
发生这种情况是因为已经有一个transpose
一般图书馆有方法吗?
我认为由于 Objective-C 在运行时的动态特性,它将检查哪个类objectAtIndex
返回然后发送消息给它?
据我了解,Objective C 中没有对赋值运算符进行运行时类型检查。由于数组可以包含混合类型,因此系统无法知道 objectAtIndex 返回什么。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)