使用脚本语言开发游戏,在原生中,与原生交互是比较多的,在CocosCreator中,有直接与Java/Objective-C交互的方式。
那么各位有没有发现几个奇怪的点
- 调用Java需要加上签名?
-解释:
因为Java有重载(Overload)的特性。想深入了解的,可以自行百度,简单点讲,java允许方法名重复,只要方法对应参数类型或参数个数中某一个不同就可以了。例如下面的方法,在同一个类中是被允许的:
1 | public void a(); |
- 调用Java签名时,String对应的是”Ljava/lang/String;”?
-解释:
int对应”I”,boolean对应”Z”,float对应”F”,可是,String对应的却不是”S”,如果你使用编辑器就会发现,int、boolean、float在java中都是没有”导包”的,因为他们是基本类型,而String在java.lang.String中,因为String是一个类。
- 调用Objective-C的方法,方法的”:”要加上,却又不用加上签名
-解释:
- Object-c没有重载的概念,即方法名相同,而参数类型不同,在Object-c中是不允许的。例如这样是不允许的。
1
2-(void)a:(NSString *)a;
-(void)a:(NSNumber *)a; - Objective-C的方法,加上:才是一个整体。例如:并不是说这个方法的方法名是a,而是a:andB:
1
-(void)a:(NSString *) a andB:(NSString *)b;
- 调用Ocjective-c,数字类型用的是NSNumber,这是什么类型?
-解释
如果没有接触过object-c的,很容易被误导为NSNumber是一种基本类型,或者直观感觉,NSInteger等继承自NSNumber,其实这是错误的。
- NSNumber是一个类,而且与NSInteger没有任何继承关系,他的父类是NSValue。
- NSInteger等是基本数据类型。
今天的分享就是这些,嗯,真的是很小很小的知识点~
原文链接: https://blog.xyzzlky.cn/posts/29675/
版权声明: 转载请注明出处.