Safari Books Online is a digital library providing on-demand subscription access to thousands of learning resources.
The first and most basic idea to understand about Objective-C is that Objective-C is a compiled language with a dynamic runtime. What this means is that the language is compiled using a compiler, enabling static, compile time type checking, but it is also linked with a runtime, which enables dynamic dispatch of methods. This dynamic runtime gives you the ability to do many things that are only found in scripting languages such as "duck typing" and introspection of objects.
NOTE
Duck typing refers to a type of language type safety where it is assumed that if an object "looks like a duck, and quacks like a duck, it must be a duck." This is as opposed to static typing, where an object must be the type that it is declared to be in order for the language to resolve methods on it. There are advantages and disadvantages to both techniques, but in the case of Objective-C, duck typing enables many of the cool features in the language.