+ (void)initialize
+ (void)initialize
类方法用于在加载类之前初次使用该类前(即该类及其子类被发送第一条消息前)初始化这个类。在执行程序的过程中,任何类中的该方法至多会被调用一次。initialize
方法具有线程安全性,而且在被发送一个类之前,总会被先发送该类的所有父类.为了避免该方法被调用多次的情况,应使用验证调用为目标类而非父类的逻辑实现。
+ (void)initialize
{
if (self ==[Son class]) {
NSLog(@"%s",__func__);
}
NSLog(@"%s",__func__);
}
+load方法与+ (void)initialize方法的区别
1.
load
方法会在+ (void)initialize
方法的调用操作之前、类被加载之后立即被调用,实际上对于静态方式链接的类,调用load
方法的操作在main()
函数的操作之前执行
2.load
方法可以由类实现也可以由分类实现,+ (void)initialize
方法永远不能在分类重写
3.在已经实现的情况下,当类被加载时,load
方法会被调用一次,在已经实现的情况下,当类收到第一条消息时,+ (void)initialize
方法会被调用一次,如果累没有是使用,那么+ (void)initialize
方法就不会被调用。
NSCache
NSCache
类提供了一块内存系统缓存,用于临时存储重建代价较高的对象,处理管理缓存中的数据外,NSCache
类还含有管理缓存大小、丢弃的对象和缓存委托的方法。缓存委托遵守NSCacheDelegate
协议,而且会在对象将被移除缓存时发送消息。NSCache
实例能够存储键值对,这与NSDictionary
实例类似,他们之间的差异是NSCache
实例提供了自动移除策略,因此会管理内存的利用率。
NSCache *cache = [[NSCache alloc]init];
[cache setCountLimit:500];
cache.delegate = self;
[cache setObject:@"Hello" forKey:@"key"];
应用服务NSProcessInfo
NSProcessInfo
类用于获取当前运行程序的信息,使用类方法NSProcessInfo
可以获取当前进程的NSProcessInfo
对象,NSProcessInfo
对象含有用于获取进程信息(如命令行参数、环境变量、主机名和进程名称等)的实例方法。
NSDictionary *environmentDic =[[NSProcessInfo processInfo]environment];
NSArray *arguments =[[NSProcessInfo processInfo]arguments];
NSString *hostName =[[NSProcessInfo processInfo]hostName];
NSString *processName =[[NSProcessInfo processInfo]processName];
int p = [[NSProcessInfo processInfo]processIdentifier];
NSString *globallyUniqueString =[[NSProcessInfo processInfo]processName];
正则表达式和文本处理
NSRegularExpression
类用于字符串中处理正则表达式。正则表达式是一种设置和识别文本的模式。
NSRegularExpression
含有创建和初始化
使用一个NSRegularExpression
对象,获取了一个NSTextCheckingResult
对象并显示它的数据
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"World" options:(NSRegularExpressionCaseInsensitive) error:&error];
NSString *greeting = @"Hello,World!";
NSTextCheckingResult *result = [regex firstMatchInString:greeting options:0 range:NSMakeRange(0, greeting.length)];
NSRange rang = [result range];
NSLog(@"%lu",(unsigned long)rang.location);
Bonjour
通过Bonjour
协议可以将设备炼乳网络
URL
处理
URL处理类用于通过标准internet协议,与URL进行交互与数据资源的通信。
提供了下列功能:
1.URL加载
2.缓存管理
3.身份认证和证书管理
4.Cookie管理
5.协议支持
1.URL加载
NSURLRequest
与NSMutableURLRequest
类用于URL加载请求,NSURLRequest
类是一种独有的网络协议和URL方案,该类含有多个方法,使用这些方法可以创建和初始化URL请求以及获取请求的属性。
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
NSURLResponse
类和NSHTTPURLResponse
类用于代表URL请求返回的回应。
NSURL *url = [NSURL URLWithString:@"http://www.google.com"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setHTTPMethod:@"GET"];
NSURLSessionDataTask *task= [[NSURLSession alloc]dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
}];
[task resume];
缓存管理
NSURLCache
和 NSCachedURLResponse
为对URL请求的回应提供了缓存。
身份认证和证书管理
证书认证和证书管理类
NSURLAuthenticationChallengeInternal
NSURLAuthenticationChallenge
NSURLCredential
NSURLCredentialStorage
NSURLProtectionSpace
提供对请求访问受保护URL的用户进行身份认证,
处理身份认证咨询
NSURLAuthenticationChallenge *challenge = [[NSURLAuthenticationChallenge alloc]init];
NSURLCredential *credential = [NSURLCredential credentialWithUser:@"TestUser" password:@"TestPassword" persistence:NSURLCredentialPersistenceForSession];
[[challenge sender]useCredential:credential forAuthenticationChallenge:challenge];
Cookie管理
使用Foundation框架的
NSHTTPCookieStorage
和NSHTTPCookie
类可以创建和管理HTTP Cookie
,这类Cookie
用于永久存储跨URL请求的数据。
协议支持
使用Foundation框架的
NSHTTPCookieStorage
和NSHTTPCookie
类可以创建和管理HTTP Cookie
,这类Cookie
用于永久存储跨URL请求的数据,
进程间通信
通过信道通信
NSPipe
类可以封装管道,管道是同于在进程间进行通信的单向信道
通过端口通信
NSPort,NSMachPort,NSMessagePort,NSSocketPort
类为进程和线程间通信提供了底层机制
端口注册
网友评论