我刚刚发现了一些让我有点困惑的事情,我想知道是否有人会为我澄清一下。
NSArray *nextArray = [NSArray arrayWithObjects:@"ONE", @"TWO", @"THREE", nil];
for(id eachObject in nextArray) {
NSLog(@"COUNT: %d", [eachObject length]);
}
为什么上面没有提示/警告我要求 id 的长度这一事实?
最佳答案
在 Objective-C 中,id
是任何类型对象的通用类型,与类无关,可用于类的实例和类对象本身。
id
类型是完全非限制性的,它没有关于对象的信息,除了它是一个对象。所以编译器无法知道该对象是否可以响应方法,因为它不知道它是什么类型的对象。
通过在您的代码中使用它,您基本上是在说“无论它指向什么,都执行此操作”。
关于iphone - id 没有警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763895/