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  *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

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