From the Cocoa Application Tutorial:
Just so.
Objects with id as their type are dynamically typed, meaning that the class of the object is determined at runtime. You can use id as the type for any object. The dynamically typed object’s class can be changed as needed, even during runtime, which should invoke a sense of both excitement and extreme caution in even the most grizzled OO veteran.
Just so.