所有使用的框架都需要导入,但是系统会根据代码对一部分系统框架进行自动导入
所以通常使用的UIKit框架并不需要我们自己手动导入
但如果仅在Xib或StoryBoard中使用了一些其他框架下的控件,就需要手动导入对应框架
例如在StoryBoard中拖放一个MapView,代码中未添加任何操作
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
@end
StoryBoard中:
这是运行会直接崩溃:
接下来导入头文件:
#import <MapKit/MapKit.h>
再次运行依然会崩溃:
这时我在控制器中添加一行代码(MapKit框架下的类):
MKMapItem *mapItem = [[MKMapItem alloc]init];
再次运行正常:
说明系统自动帮我们导入了MapKit框架
MapKit框架中包含CoreLocation框架,如果我在控制器中只写这样一行代码
CLGeocoder *geocoder = [[CLGeocoder alloc]init];
还是会崩溃,所以系统只会根据部分代码自动导入系统框架