CoreLib是一组可重用的Objective-C源代码,用于让开发Mac和iOS应用程序的各个方面更加容易、快速和安全。
CoreLib设计得让你可以只使用你想要的/需要的部分,而不必强制使用全部功能。
只需在您的.pch文件中包含CoreLib.h,并包含执行你感兴趣的任务的文件。
CoreLib具有以下组件
基于Cocoa的基础类(如NSArray、NSData、NSObject、NSString等)的扩展分类,以提供新的功能或语法糖(AppKit+CoreCode、Foundation+CoreCode)
(iOS)针对UIActionSheet、UIAlertView等类的子类,以提供更方便的基于块的接口或新的视图控制器(iOS/JM*)
(Mac)用于发送电子邮件、获取主机信息、管理登录项、显示样式字体列表等的便利类(Mac/JM*)
所有Foundation和AppKit类的分类,以提供属性而不是GETTER/SETTER,这在10.10 SDK中也有提供,但我们在Xcode 6之前的版本中也提供了(AppKit+Properties、Foundation+Properties)
对老SDK中的对象索引的支持,其中苹果不支持(Foundation+Indexing)
对在部署目标上不可用的方法和类调用生成警告的支持(CoreLib_Availability)
对集合类中的伪静态类型的支持(在集合中直接调用对象属性而不需要转型)以及更多便利的功能(CoreLib)
在您的PCH文件中
#import "CoreLib_Availability.h" // optional, for warnings on calls to unavailable methods
#import <Cocoa/Cocoa.h> // you had that before
#import "CoreLib.h"
在applicationDidFinishLaunching:方法中
cc = [CoreLib new]; // dont forget this
一些示例说明如何利用CoreLib使开发应用程序更加有趣。
而不是
[[NSUserDefaults standardUserDefaults] objectForKey:@"MyPref"]
编写
@"MyPref".defaultObj
而不是
[[NSUserDefaults standardUserDefaults] setInteger:1 forKey:@"MyPref"];
编写
@"MyPref".defaultInt = 1;
而不是
[@"abc\ndef\nbla" componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]]
编写
@"abc\ndef\nbla".lines
而不是
NSURL *url = [NSURL URLWithString:@"http://myhost/myfile"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
NSData *file = [NSURLConnection sendSynchronousRequest:request returningResponse:NULL error:NULL];
编写
NSData *file = @"http://myhost/myfile".download;
还有许多其他便利方法,包括对NSArray的一些功能扩展。
CoreLib的一些功能需要链接额外的框架,因此只有在包含这些框架并设置某些预处理值时才可用:#define USE_SECURITY 1 // 如果链接Security框架 #define USE_SYSTEMCONFIGURATION 1 // 如果链接SystemConfiguration框架 #define USE_IOKIT 1 // 如果链接IOKit框架 #define USE_DISKARBITRATION 1 // 如果链接DiskArbitration框架 #define USE_SNAPPY 1 // 如果链接Snappy框架 #define USE_MAILCORE 1 // 如果链接MailCore框架 #define USE_APPLEMAIL 1 // 如果有Mail.app的ScriptingDefinition
此外,CoreLib的一些部分需要设置SANDBOX预处理定义来指示您的应用程序是否为沙盒。