为目标c中的方法传递未知类型的参数,可能吗?

use*_*952 7 generics methods function objective-c ios

是否可以将未知类型的参数传递给objective-C方法?

C#你可以写,<T>以实现这一点,但我知道objective-C没有泛型所以有其他方法使这成为可能objective-C吗?

我需要这个,因为我想创建一个方法来改变不同对象的文本颜色,如a UITextField和的占位符文本UIButton.所以我的计划是创建一个调用的方法textWhite,然后在此方法中检查对象的类型,然后运行匹配的代码使文本颜色变为白色.

Aks*_*ade 7

是的,可以传递未知类型的参数.见下面的例子.

-(void) fooMethod:(id)unknownTypeParameter {
  if( [unknownTypeParameter isKindOfClass:[Animal Class]]) {
      Animal *referanceObj = (Animal *) unknownTypeParameter;
      referanceObj.noOfLegs = 4;
  }
}
Run Code Online (Sandbox Code Playgroud)

请参阅使用id对象的链接作为参数在Objective-C中使用(id)

  • @ user2408952与C++不同,所有对象都是Objective-C中的指针(因为它们在C#中).一个对象被分配一次,并且可以有任意数量的变量指向它..协议没有办法让*不*成为一个指针,这样明星就会被抛弃 - 因为怪异!..(从技术上讲,Objc对象不能是指针,但实际上它们总是如此).你是对的:一个指针就位于堆栈上,指向堆分配对象的内存.只占用一个RAM地址. (2认同)