iOS零碎知识小分享(一)[包含最近证书失效上传失败的解决方法]

1.最近有很多人的证书没法打包,没法上传的解决方法

我的一个同事污力波波告诉我,造成这些的原因是苹果的根证书在2016年2月14号到期了,所以下载装一下就好了,装完记得重启。
https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
这里有详细的解决教程:

https://segmentfault.com/q/101000000443396

2.关于NSOperation,异步的技巧

当你写一个operation继承NSOperation的时候,我们要实现以下方法来进行我们的多线程操作:

- (void)start;
- (void)main;

然而默认的是main执行完了,就自动视为operation结束,这样就导致一些异步的操作,或者回调的处理出现问题,所以我们可以重写下面的状态:

@property (readonly, getter=isExecuting) BOOL executing;
@property (readonly, getter=isFinished) BOOL finished;

要点是截取系统的KVO,不让系统的逻辑控制finish的flag,具体如下:

- (void)main {
    
    @synchronized (self) {
        if (self.isCancelled) {
            self.finished = YES;
            [self done];
            return;
        }
    }
    
   //do something
}

- (void)done{
    self.executing = NO;
    self.finished = YES;
}

- (void)setFinished:(BOOL)finished {
    [self willChangeValueForKey:@"isFinished"];
    _finished = finished;
    [self didChangeValueForKey:@"isFinished"];
}

- (void)setExecuting:(BOOL)executing {
    [self willChangeValueForKey:@"isExecuting"];
    _executing = executing;
    [self didChangeValueForKey:@"isExecuting"];
}

3.一些关于废弃方法处理的小技巧

如果一个方法/参数暂时不用,或者正在改动中,防止别的地方调用,我们可以加上__unavailable来废弃。

-(void)__unavailable methodName;

那如果有的地方仍然有用到该方法/参数,则可做出如下提示:

@property (assign, nonatomic) NSInteger number DEPRECATED_MSG_ATTRIBUTE("this property is deprecated");

4.泛型在OC中的应用

泛型是OC在2015年引入的新特性,写法如下:

NSMutableArray <NSString *> *strings = [NSMutableArray new];

这样的好处是,加入数组的时候不需要进行类型转换,且也保证了安全性。

还有枚举的时候,会自动生成类型,方便至极:

[strings enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
     //something
}];

5.关于属性非空的判断

我们通常用nonnull来限定属性的非空状态:

@property (strong, nonatomic, nonnull) NSString *str;

然而很多个属性的情况下,每次都写比较坑爹,所以可以用苹果给我们准备好的宏:

NS_ASSUME_NONNULL_BEGIN
@property (strong, nonatomic) NSString *str1;
@property (strong, nonatomic) NSString *str2;
@property (strong, nonatomic, nullable) NSString *str3;
NS_ASSUME_NONNULL_END

其中nullable设置该参数可以赋值为空

简书已经弃用,欢迎移步我的小专栏:
https://xiaozhuanlan.com/dahuihuiiOS

推荐阅读更多精彩内容

  • 原文链接:http://www.cocoachina.com/ios/20150807/12911.html 现如...
    Kevin追梦先生阅读 1,083评论 0 3
  • 欢迎加入iOS交流群2466454,大家互相交流学习!阿里-p6-一面 1.介绍下内存的几大区域?2.你是如何组件...
    不懂技术的爱迪生阅读 14,805评论 7 199
  • 1.介绍下内存的几大区域? 2.你是如何组件化解耦的? 3.runtime如何通过selector找到对应的IMP...
    小孩仔阅读 1,240评论 0 21
  • iOS Concurrency Programming Guide iOS 和 Mac OS 传统的并发编程模型是...
    YangPu阅读 444评论 0 2
  • Object C中创建线程的方法是什么?如果在主线程中执行代码,方法是什么?如果想延时执行代码、方法又是什么? 1...
    AlanGe阅读 1,085评论 0 16
  • 一个人的豁达,体现在落魄的时候。 一个人的涵养,体现在愤怒的时候。 一个人的体贴,体现在悲伤的时候。 一个人的成熟...
    Sipure阅读 132评论 0 2
  • 这幅画看上去层次还是比较明显的,左下切的池塘在最前面,随之是树和人,房子或者严格意义上说是城墙亦或是碉堡在最后,适...
    Nina张阅读 186评论 1 1
  • 360于上线两周年之际上线“谈谈”功能,眼前一亮,变动很大。简单分析学习学习分析从根本诉求、目标人群、产品形式、推...
    e19c64b8b8ea阅读 355评论 0 2
  • 王慧康12月第九天读书打卡。我读了《鲁滨逊漂流记》第65页到83页。鲁滨逊转眼到岛上已经过了两年他的心里有了一种新...
    王慧康阅读 84评论 0 0
  • 今天简单体验了爱普生涯推出的节气辟谷(秋分)。因为时间原因,没有一一体验全天的流程,只跟进了七支坐和食气。 七支坐...
    heureusefay阅读 151评论 0 0