我正在阅读这本书,它正在进行静态输入,在阅读了这一章之后,我理解为:
Foo var)。id var)。我知道在Java中您可以强制执行数组中包含的对象类型,比如:ArrayList<Double>,但是在objects中,我已经对此做了最少的研究,没有这样的方法,因此,所有的NSArray在编译时都包含id。
如果这个特性(奇怪地称为泛型,即使它是静态类型而不是泛型类型)在Objective中是不可用的,这是否意味着泛型编程有时是必要的?
发布于 2014-01-25 07:33:11
是的,当您需要编写需要在编译时不知道类型的情况下对多个类型进行操作的东西时,泛型输入是必要的。
虽然objective本身不包含泛型,但Ids和void*基本上是一样的。您可以编写接受void*或Id的方法,并对其进行一些处理。在调用该方法之前,您将对要操作的对象执行显式强制转换。
编辑:例如,如果您想要编写一个方法来生成任何类型对象的浅表副本,您会做什么?你必须做一些像copy(void* src,void* dest, int size)这样的事情。没有泛型就无法做到这一点。
https://stackoverflow.com/questions/21347728
复制相似问题