// *** 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 alloc] init];
[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 alloc] init];
[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