<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenqiangblogs的博客]]></title><description><![CDATA[温故知新]]></description><link>https://blog.youkuaiyun.com/chenqiangblock</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenqiangblock]]></copyright><item><title><![CDATA[Homebrew Update 报错问题]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/131680485</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/131680485</guid><author>chenqiangblock</author><pubDate>Wed, 12 Jul 2023 14:16:30 +0800</pubDate><description><![CDATA[brew update homebrew更新
]]></description><category></category></item><item><title><![CDATA[pod search 报错 ruby环境问题]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/121428329</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/121428329</guid><author>chenqiangblock</author><pubDate>Fri, 19 Nov 2021 18:22:00 +0800</pubDate><description><![CDATA[系统升级后 cocoapods install 报错 信息如下

解决方式 :
1.升级 gem  ruby 环境
第一步 审计 gem
使用brew 库管理工具
$:brew install gem

升级后设置镜像
$:gem sources -a https://gems.ruby-china.com/

查看升级后的镜像是否设置成功
gem sources -l

成功如下

2. 升级ruby
$: brew install ruby


表示成功
这时你查看ruby版本发现还是以前的2.6版本
]]></description><category></category></item><item><title><![CDATA[使用国内镜像clone]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/121119316</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/121119316</guid><author>chenqiangblock</author><pubDate>Wed, 03 Nov 2021 13:47:54 +0800</pubDate><description><![CDATA[使用国内镜像，目前已知Github国内镜像网站有github.com.cnpmjs.org和git.sdut.me/。速度根据各地情况而定，在clone某个项目的时候将github.com替换为github.com.cnpmjs.org即可。
//这是我们要clone的
git clone https://github.com/Hackergeek/architecture-samples
//使用镜像
git clone https://github.com.cnpmjs.org/Hackergeek/a]]></description><category></category></item><item><title><![CDATA[git clone 443]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/121117650</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/121117650</guid><author>chenqiangblock</author><pubDate>Wed, 03 Nov 2021 11:33:25 +0800</pubDate><description><![CDATA[1 查询网址域名对应的IP 在该网址查询域名对应的ip
2 分别查询github.com和github.global.ssl.fastly.net对应的ip地址
3 将结果拼接到到hosts文件里(在桌面上Command+Shift + G)弹出框内输入/etc在文件列表里找到hosts
4 将修改好后的hosts文件再次放入etc内即可

...]]></description><category></category></item><item><title><![CDATA[replaykit2屏幕共享 webRTC发送共享画面]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/116655134</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/116655134</guid><author>chenqiangblock</author><pubDate>Tue, 11 May 2021 14:56:32 +0800</pubDate><description><![CDATA[iOS 出了replaykit2 后实现了系统屏幕录制功能,终于不在只能应用内录制了,在外部宣讲ppt,变的容易了许多,如何创建使用这个网上有很多extension使用的方法,我在这里也不想多赘述,毕竟是固定方式方法
        我这里想讲讲关于如何将在extension中录制的视频流传回主app并将视频流发送到远端,这才是最关键,也是replaykit2这个功能的难点

主要需要解决的问题

2.将共享的视频转换成可以传输的数据类型,在转回CMSampleBufferRef,用于编码或者其他

3.共]]></description><category></category></item><item><title><![CDATA[replaykit2处理]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/108318374</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/108318374</guid><author>chenqiangblock</author><pubDate>Thu, 22 Oct 2020 11:58:09 +0800</pubDate><description><![CDATA[####习惯性的开始前先叙个旧，感慨下，距离上次写博客已经很久时间了，感觉要学的东西很多，学的也很杂乱，今天难得感觉心情比较轻松，想着写写以前弄的东西，慢慢回忆一下，所以先从现在这个开始吧，

replaykit在ios9时已经出来了，那是还只允许在app内录制，还不支持录制桌面及其他应用，我之前的博客中有详细的介绍如何使用replaykit实现app内的录制，这里不再赘述了replaykit app内录制

特点

replaykit2在replaykit的基础上增加了能录制桌面，退到后台打开其他应用同样]]></description><category></category></item><item><title><![CDATA[ios12.1开发包支持文件及添加方法]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/83616075</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/83616075</guid><author>chenqiangblock</author><pubDate>Thu, 01 Nov 2018 10:19:19 +0800</pubDate><description><![CDATA[为xcode添加支持低版本ios开发包支持应该都用过,我将步骤整理了一下,记录下来
ios12.1支持文件下载地址
首先在finder中的前往文件夹中输入
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport


选中DeviceSupport右键选中  显示简介 如下图


点击右下角的锁 ,弹出输入Mac的...]]></description><category></category></item><item><title><![CDATA[为xcode9.2添加 ios12支持文件]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/82736156</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/82736156</guid><author>chenqiangblock</author><pubDate>Mon, 17 Sep 2018 14:06:34 +0800</pubDate><description><![CDATA[新换了一个Mac使用,安装xcode工程后,在终端上clone 一个github工程出现如下错误 



记得在之前Mac上clone 同样的地址,没有报这个问题,在网上查了一下,打印了一下xcode地址

$:xcode-select --print-path

输出地址为:   Applelication/developer/com…. 没有截图大概是这个地址(反正就是正常的地址不一样)

网...]]></description><category></category></item><item><title><![CDATA[为xcode9.2添加ios11.4支持文件]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/81480439</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/81480439</guid><author>chenqiangblock</author><pubDate>Tue, 07 Aug 2018 14:19:33 +0800</pubDate><description><![CDATA[为xcode添加支持低版本ios开发包支持应该都用过,我将步骤整理了一下,记录下来 
首先在finder中的前往文件夹中输入 



Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport



选中DeviceSupport右键选中  显示简介 如下图




点击右下角的锁 ,弹出输入Mac的密码获取修改权限...]]></description><category></category></item><item><title><![CDATA[多线程多任务顺序执行]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/81390499</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/81390499</guid><author>chenqiangblock</author><pubDate>Fri, 03 Aug 2018 16:44:33 +0800</pubDate><description><![CDATA[ios开发中会用到多任务顺序执行,执行完毕在执行其他的线程任务,在面试中也会经常被问到,我这里就将方法代码记录下来作为一个笔记 
我这里将通过信号量和GCD的Group实现多任务顺序执行 
1.通过信号量来实现



//通过模拟一个网络请求来实现一个有返回值的网络请求任务
 NSString *str = @&amp;quot;https://www.baidu.com&amp;quot;;
    NSURL *url = [N...]]></description><category></category></item><item><title><![CDATA[CoreData的使用]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/81102694</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/81102694</guid><author>chenqiangblock</author><pubDate>Wed, 18 Jul 2018 17:59:34 +0800</pubDate><description><![CDATA[这边我将如何使用CoreData的示例代码记录下来,不再截图说明如何创建model模型了,截图上传麻烦(公司网限速)

#import &amp;lt;Foundation/Foundation.h&amp;gt;
#import &amp;lt;CoreData/CoreData.h&amp;gt;
#import &quot;Student+CoreDataClass.h&quot;


@interface CQ_CoreDataSource...]]></description><category></category></item><item><title><![CDATA[RxSwift之路02-----RxSwift使用方式]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80832315</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80832315</guid><author>chenqiangblock</author><pubDate>Wed, 27 Jun 2018 17:20:11 +0800</pubDate><description><![CDATA[上篇学习了一下,简单的Rx使用的方式,这篇将更直接的使用RxSwift来写一些就简单的UI上的逻辑处理 
使用下面代码即可实现一个检测用户名和密码的并作出相应处理的UI逻辑

演示效果



**示例代码如下**




import RxSwift
import RxCocoa

class ExampleViewController: UIViewController {
    let di...]]></description><category></category></item><item><title><![CDATA[RxSwift之路01-----简单的RxSwift使用]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80828612</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80828612</guid><author>chenqiangblock</author><pubDate>Wed, 27 Jun 2018 14:22:00 +0800</pubDate><description><![CDATA[使用一年多swift后终于要入坑RxSwift了和在OC时代的ReactiveCocoa没有多少差别,这里先举一些简单的使用,可以减少代码的书写,结构清晰 
在不使用RxSwift时,我们写button的事件时是这样的



 override func viewDidLoad() {
        super.viewDidLoad()

        let button = UIButt...]]></description><category></category></item><item><title><![CDATA[Swift封装图片浏览,多张图片浏览,缩放,gif图片的播放]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80694637</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80694637</guid><author>chenqiangblock</author><pubDate>Thu, 14 Jun 2018 16:25:55 +0800</pubDate><description><![CDATA[封装了一个图片浏览器,实现了图片的浏览,缩放,支持多张图片的浏览缩放,保存到相册等功能

实现功能

1.图片浏览,根据图片的大小适应,浏览长图
2.多张图片左右滑动浏览
3.图片的缩放
4.显示gif图片并播放


实现技术

1.使用UICollectionView作为图片浏览的承载控制器
2.自定义cell显示图片,
3.使用UIScrollerView作为最底层视图 
4.使用UIImag...]]></description><category></category></item><item><title><![CDATA[封装Alamofire 网络数据请求]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80500082</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80500082</guid><author>chenqiangblock</author><pubDate>Tue, 29 May 2018 18:14:43 +0800</pubDate><description><![CDATA[从OC转到swift后,由AFNwtWorking转为Alamofire做网络请求,下面我单独写了一个单例请求类



import UIKit
import Alamofire
import SwiftyJSON
let BaseUrl = &quot;https://httpbin.org/get&quot;

private let NetWorkRequestShareInstance = NetWorkRe...]]></description><category></category></item><item><title><![CDATA[使用CollectionView实现无限轮播图(自动和手动轮播)]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80451869</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80451869</guid><author>chenqiangblock</author><pubDate>Fri, 25 May 2018 14:58:52 +0800</pubDate><description><![CDATA[使用UICollectionView封装了一个无限循环的轮播图,实现手动轮播和定时器自动轮播,传入图片数组和标题数组,即可实现图片文字的轮播图,并有点击事件,实现代理方法可实现点击事件的处理

///调用

class HomeViewController: BaseViewController {
override func viewDidLoad() {
        super.viewD...]]></description><category></category></item><item><title><![CDATA[使用FFMpeg解码,opengl渲染,转为图片显示两种方式]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80410058</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80410058</guid><author>chenqiangblock</author><pubDate>Tue, 22 May 2018 18:53:49 +0800</pubDate><description><![CDATA[使用FFMPeg解码rtsp协议的视屏流,并使用openGL渲染,

1.之前有使用VLC解码但是不能满足需求,后来直接使用FFmpeg解码openGL渲染 
2.使用FFMpeg解码这里解决了,解码后不能拿到视屏流多出显示的问题 
3.解决了打开首帧视屏比较慢的问题,现在1-2内既能打开视屏 
4.解决了找不到pps报警告的问题 
5.多线程优化,解码的同时不影响UI的操作更新 
解码显示可以转...]]></description><category></category></item><item><title><![CDATA[Swift4.0处理日期时间]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80376010</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80376010</guid><author>chenqiangblock</author><pubDate>Sat, 19 May 2018 17:14:01 +0800</pubDate><description><![CDATA[时间的处理,在开发中经常遇见的到,我们洗完处理成年月日时分秒 
这里我写了一个Date的分类用于处理时间

//使用非常的的方便,只需要传入时间几个转换



//只需传入型如下面的时间样式就行
 let creatDate = NSDate.dataWithStr(time: &quot;Sat May 18 16:00:28 +0800 2018&quot;)
 label.text = creatDate.de...]]></description><category></category></item><item><title><![CDATA[swift4.0解决setValuesForKeys无法赋值的问题]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80302449</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80302449</guid><author>chenqiangblock</author><pubDate>Sun, 13 May 2018 20:34:37 +0800</pubDate><description><![CDATA[swift 4.0 以前字典转model我们使用 setValuesForKeysWithDictionary 代码如下

class Status: NSObject{
    //创建时间
    var created_at:String?

    //ID
    var id:Int = 0

    //信息内容
    var text:String?

    //来源
    ...]]></description><category></category></item><item><title><![CDATA[Swift4.0中Runtime method_exchangeImplementations的使用和initialize()方法的替代]]></title><link>https://blog.youkuaiyun.com/chenqiangblock/article/details/80180566</link><guid>https://blog.youkuaiyun.com/chenqiangblock/article/details/80180566</guid><author>chenqiangblock</author><pubDate>Thu, 03 May 2018 15:21:34 +0800</pubDate><description><![CDATA[在swift4.0中
load（）方法已经失效
initialize（）也失效
一时间我一度不知道怎么用运行时的method_exchangeImplementations方法，后来在网上查看总结出来下面将代码贴出来

extension UIViewController {
public class func initializeMethod(){
    let originalSelecto...]]></description><category></category></item></channel></rss>