Objective-C
C extended with Smalltalk-style message passing; the original language of macOS and iOS development.
27 steps across 1 tours, from the basics to complete programs.
The tours
- First released
- 1984
- Created by
- Brad Cox and Tom Love
- Typing
- Message sends in square brackets over plain C; dynamic to the core
- Snippets target
- 2.0
- File extensions
- .m, .h
What it is for
Objective-C was the language of Apple platforms for three decades: every Mac app of the NeXT lineage, every iPhone app of the App Store's first decade, and the frameworks — Foundation, AppKit, UIKit — whose NS prefixes still name the types Swift developers touch daily. Enormous production codebases at Apple and beyond remain Objective-C, and Swift's celebrated interop exists precisely because the world underneath still speaks it.
The design bolts Smalltalk-style messaging onto unmodified C: objects receive messages resolved at run time, nil swallows messages and answers zero, classes are objects you can interrogate, and any method can be swapped at run time. That dynamism made Cocoa's architecture possible — target-action, key-value observing, responder chains — and still powers the runtime tricks underneath much of iOS.
Today it is a maintenance language with a working retirement: chosen rarely for new work, read constantly. Anyone touching an older iOS codebase, writing a framework that must interoperate, or spelunking Apple's own stack ends up fluent in the brackets. The C substrate means every C library is directly usable, which kept it beloved in audio, graphics, and systems-adjacent app work.
Where it came from
Brad Cox and Tom Love built Objective-C at their company PPI (later Stepstone) in 1984, aiming to bring Smalltalk's objects to C's world — Cox called the vision 'software ICs', components wired together like chips. It might have stayed a footnote had NeXT not licensed it in 1988 as the language of NeXTSTEP, whose frameworks established the NS prefix and the patterns Cocoa still uses.
Apple's 1997 acquisition of NeXT made Objective-C the foundation of Mac OS X, and the 2008 iPhone SDK made it, overnight, one of the most-learned languages on earth. The language modernized fast under that pressure: properties in 2006, blocks and Grand Central Dispatch in 2009, ARC replacing manual retain/release in 2011, and the collection literals in 2012.
Swift's 2014 announcement began the long handover, but not an ending: the runtimes interoperate in both directions, Apple still ships and patches Objective-C frameworks, and the language settled into the role C itself knows well — the layer underneath, stable, everywhere, and quietly load-bearing.
What it is like to type
Objective-C types like C wearing brackets: every message send opens a square bracket you must remember to close, and selectors interleave their names with their arguments — stringByReplacingOccurrencesOfString:withString: is one method name, typed in pieces. The @ sigil starts literals (@"", @[], @{}, @(42)) and keywords (@interface, @property, @autoreleasepool), NS prefixes every framework type, and camelCase runs long. It is verbose, rhythmic typing — brackets, colons, capital NS — unmistakable from the first line.
27 steps across 1 tours, from the basics to complete programs.
Official documentation
- Programming with Objective-C (Apple)
- The Foundation framework
- The Objective-C runtime
- Clang's Objective-C ARC guide
- GNUstep, the open implementation