iphone - id 没有警告?

标签 iphone objective-c xcode cocoa-touch

我刚刚发现了一些让我有点困惑的事情,我想知道是否有人会为我澄清一下。

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/

相关文章:

ios - 带有自定义动画的屏幕弹出 Controller 时出现黑色效果?

xcode - CABasicAnimation 不适用于 UIImageView

ios - 将 UIImage 绘制为 MKMapView 的 subview 与将其绘制为 map View 中的注释相比,对 CPU 的压力更小。为什么?

iphone - 如何知道照片是横向还是纵向模式?

objective-c - 新的 Apple LLVM 4.0 "default synthesize"功能如何运作?

ios - 如何从 GameViewController 中的另一个 swift 文件调用方法?

xcode - iTunes Connect中的支持URL

iphone - 用于 iOs 构建和依赖项的构建和项目管理工具

iphone - Objective-C 稀疏数组 redux

objective-c - gethostbyname 中调用 abort() - 如何处理