美文网首页
《精通Objective-C》阅读笔记(Foundation框架

《精通Objective-C》阅读笔记(Foundation框架

作者: 41c48b8df394 | 来源:发表于2018-11-13 23:48 被阅读18次
+ (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加载

NSURLRequestNSMutableURLRequest类用于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];
    

缓存管理
NSURLCacheNSCachedURLResponse为对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框架的 NSHTTPCookieStorageNSHTTPCookie类可以创建和管理HTTP Cookie,这类Cookie用于永久存储跨URL请求的数据。

协议支持

使用Foundation框架的 NSHTTPCookieStorageNSHTTPCookie类可以创建和管理HTTP Cookie,这类Cookie用于永久存储跨URL请求的数据,

进程间通信

通过信道通信

NSPipe类可以封装管道,管道是同于在进程间进行通信的单向信道

通过端口通信

NSPort,NSMachPort,NSMessagePort,NSSocketPort类为进程和线程间通信提供了底层机制

端口注册

相关文章

网友评论

      本文标题:《精通Objective-C》阅读笔记(Foundation框架

      本文链接:https://www.haomeiwen.com/subject/xpcrfqtx.html