新版本的变更 / Objective-C 2013: Modules

// *** before: ***
// #import is a textual insertion: the preprocessor copies the whole header
// into your file, and it does that again in every file of the project
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>

@implementation Tracker
- (void)start {
    NSString *text = [NSString stringWithFormat:@"%d"1];
    CLLocationManager *manager = [[CLLocationManager allocinit];
    [manager startUpdatingLocation];
}
@end

// the same thousands of lines were parsed once per file, which is why every
// project carried a precompiled header just to make the build bearable

// *** in version 2013: ***
// @import loads a framework as a ready made, once compiled binary
// description of its interface
@import Foundation;
@import CoreLocation;

@implementation Tracker
- (void)start {
    NSString *text = [NSString stringWithFormat:@"%d"1];
    CLLocationManager *manager = [[CLLocationManager allocinit];
    [manager startUpdatingLocation];
}
@end

// with modules turned on (-fmodules) an ordinary #import of a framework
// umbrella header is translated into a module import by itself, so old
// files get the speed without being rewritten