<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lvmaker的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lvmaker</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lvmaker]]></copyright><item><title><![CDATA[在OC项目中使用SwiftUI]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/126686819</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/126686819</guid><author>lvmaker</author><pubDate>Sun, 04 Sep 2022 11:10:37 +0800</pubDate><description><![CDATA[几年前的一个老OC工程，最近想要在上面新增几个功能，打算使用SwiftUI来做，顺便复习下swiftUI的知识。
第一步：创建SwiftUI文件。
第二步，在创建的SwiftUI文件中添加转换成OC的代码。
第四步，在OC中调用SwiftUI的代码。]]></description><category></category></item><item><title><![CDATA[照片时间隐私政策]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/124916644</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/124916644</guid><author>lvmaker</author><pubDate>Sun, 22 May 2022 21:43:47 +0800</pubDate><description><![CDATA[照片时间隐私政策
版本更新日期：2022年5月22日
版本生效日期：2022年5月22日
本应用尊重并保护所有使用服务用户的个人隐私权。为了给您提供更准确、更有个性化的服务，本应用会按照本隐私权政策的规定使用和披露您的个人信息。但本应用将以高度的勤勉、审慎义务对待这些信息。除本隐私权政策另有规定外，在未征得您事先许可的情况下，本应用不会将这些信息对外披露或向第三方提供。本应用会不时更新本隐私权政策。 您在同意本应用服务使用协议之时，即视为您已经同意本隐私权政策全部内容。本隐私权政策属于本应用服务使用协议不可]]></description><category></category></item><item><title><![CDATA[The Google Mobile Ads SDK was initialized incorrectly]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/100061183</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/100061183</guid><author>lvmaker</author><pubDate>Sun, 25 Aug 2019 11:23:30 +0800</pubDate><description><![CDATA[今天在升级google ad 的时候，启动应用就有一个crash，看日志：

关键信息如下：
The Google Mobile Ads SDK was initialized incorrectly. Google AdMob publishers should follow instructions here: https://googlemobileadssdk.page.link/admo...]]></description><category></category></item><item><title><![CDATA[iOS try-catch memory leak详解]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/88723115</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/88723115</guid><author>lvmaker</author><pubDate>Thu, 21 Mar 2019 19:03:14 +0800</pubDate><description><![CDATA[iOS try-catch memory leak详解
无论多优秀的客户端的工程师，都架不住服务端不经意间给你吐回的异常数据，怎么能够尽量的避免被坑呢？一个可能的方式，在使用数据之前做好类型校验；另一个，在涉及一些可能会越界或者自己不放心的地方，加一下try-catch，不过使用try-catch的时候，有一些注意事项，其中最重要的就是 memory leak。
如何模拟或者检查泄漏？
定义一个最...]]></description><category></category></item><item><title><![CDATA[使用clang查看OC源码C++实现报错的处理]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/88623253</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/88623253</guid><author>lvmaker</author><pubDate>Sun, 17 Mar 2019 17:57:04 +0800</pubDate><description><![CDATA[错误产生的原因：
include path for stdlibc++ headers not found; pass ‘-std=libc++’ on the command line to use
the libc++ standard library instead [-Wstdlibcxx-not-found]
xcode10 ios12已经彻底没有这个lib了
解决办法
直接去xcode...]]></description><category></category></item><item><title><![CDATA[iOS 多window statusbar rotation 控制]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/83147935</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/83147935</guid><author>lvmaker</author><pubDate>Thu, 18 Oct 2018 15:50:30 +0800</pubDate><description><![CDATA[一、问题的产生
临近发版时，同事突然找我帮忙看一个statusbar旋转的问题：应用主页只支持竖屏（有子页面需要横屏，所以app还是需要支持portrait、landscapeLeft、landscapeRight三个方向），打卡手机的横竖屏锁，旋转手机，只支持 portrait 的首页的statusbar方向竟然发生了旋转。
二、问题的定位
发现这个问题，菊花一紧，赶紧下了一个appstore线...]]></description><category></category></item><item><title><![CDATA[Mac安装Redis4.0.8]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/79590794</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/79590794</guid><author>lvmaker</author><pubDate>Sat, 17 Mar 2018 12:12:41 +0800</pubDate><description><![CDATA[Mac版本:10.13.1 
xcode版本9.1

Redis简介

Redis是一个高性能的key-value内存数据库;

中文网站:http://redis.cn

官方网站:http://redis.io

Redis有三个主要的特点是有别于其他很多竞争对手的:

1.Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用;

2.Redis不仅支持简...]]></description><category></category></item><item><title><![CDATA[情人节分享几个不错的娱乐工具]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/79324793</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/79324793</guid><author>lvmaker</author><pubDate>Wed, 14 Feb 2018 11:25:23 +0800</pubDate><description><![CDATA[一、各大视频网站去除VIP、广告插件

vip看看： http://vip.72du.com/?f=vipbar2#help



二、全网音频搜索、下载

疯狂音乐搜索： http://music.ifkdy.com/

比如，我从QQ音乐中，搜索 追梦赤子心，得到如下结果： 


红线框中，是音乐文件的地址，如果想要下载这个音乐文件，复制这个文件，打开电脑的终端，使用curl命令来获取，cur...]]></description><category></category></item><item><title><![CDATA[iOS framework 制作]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/79059858</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/79059858</guid><author>lvmaker</author><pubDate>Sun, 14 Jan 2018 22:22:19 +0800</pubDate><description><![CDATA[最近在写了一个上传人眼图片的sdk给第三方用户使用，用到了iOS framework，在网上找了一些这方面写的比较好的文章： 
//iOS framework 具体制作过程 
https://www.cnblogs.com/oc-bowen/p/7478461.html

//xcode的一些优化策略。 
http://815222418.iteye.com/blog/2317439]]></description><category></category></item><item><title><![CDATA[iOS模板和编码规范（文章收藏）]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/78768417</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/78768417</guid><author>lvmaker</author><pubDate>Sun, 10 Dec 2017 22:57:18 +0800</pubDate><description><![CDATA[这篇文字写的很好： 
http://www.cocoachina.com/ios/20170419/19087.html]]></description><category></category></item><item><title><![CDATA[Mac 上 Class JavaLaunchHelper is implemented in both 报错]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/78297683</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/78297683</guid><author>lvmaker</author><pubDate>Fri, 20 Oct 2017 17:24:04 +0800</pubDate><description><![CDATA[Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/bin/java (0x10d19c4c0) and /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Hom]]></description><category></category></item><item><title><![CDATA[Code Snippets 使用]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/77844852</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/77844852</guid><author>lvmaker</author><pubDate>Mon, 04 Sep 2017 23:33:55 +0800</pubDate><description><![CDATA[一个偶然的机会，了解了到了xcode一个非常不错的、可以提高代码编写效率的工具，Code Snippets。关于如何使用Code Snippets来设置自己的代码片段，请参考下面这篇文章： 
http://blog.youkuaiyun.com/wzzvictory/article/details/12163939文章写的很好、把如何自定义Code Snippets的方法讲的很透彻，唯一的缺点是没有设置快捷键，]]></description><category></category></item><item><title><![CDATA[#pragma clang diagnostic ignored 作用]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/77622385</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/77622385</guid><author>lvmaker</author><pubDate>Sun, 27 Aug 2017 19:26:00 +0800</pubDate><description><![CDATA[我们首先要搞清楚的是：作为预处理指令，#pragma 在编译时进行计算。但它并不像如 #ifdef…#endif 之类的宏，#pragma 的使用方式不会改变你的应用运行时的行为。相反的，#pragma 声明主要由 Xcode 用来完成两个主要任务：整理代码和防止编译器警告。我相信大家都用过 #pragma mark来在划分代码模块，使代码更整洁、逻辑更清晰。例如：@implementation V]]></description><category></category></item><item><title><![CDATA[iOS __attribute__ 总结]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/77129681</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/77129681</guid><author>lvmaker</author><pubDate>Sat, 12 Aug 2017 20:24:13 +0800</pubDate><description><![CDATA[attribute是GNU C特色之一,在iOS用的比较广泛.系统中有许多地方使用到. attribute可以设置函数属性（Function Attribute ）、变量属性（Variable Attribute ）和类型属性（Type Attribute)等.今天在研究iOS开发模块解耦的时候，发现了一个平时我忽略太多次的一个东西，attribute，本来想深入研究一下，分享给大家，结果找到了一篇]]></description><category></category></item><item><title><![CDATA[利用AVMutableVideoComposition在特定时间添加水印]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51945254</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51945254</guid><author>lvmaker</author><pubDate>Mon, 18 Jul 2016 20:33:46 +0800</pubDate><description><![CDATA[今天下午，一个csdn上的朋友加我QQ，问我如何在指定时间段内给视频添加水印，很小众的需求，但是确实有一些应用场景。我研究了一下，在之前加水印的基础上，加了一个动画，效果还可以，故分享给大家。- (void)applyVideoEffectsToComposition:(AVMutableVideoComposition *)composition size:(CGSize)size{
    //]]></description><category></category></item><item><title><![CDATA[GUPImage库的队列管理]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51883037</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51883037</guid><author>lvmaker</author><pubDate>Mon, 11 Jul 2016 18:20:02 +0800</pubDate><description><![CDATA[最近项目进度不是很紧张，开始研究GUPImage库的源码，发现GUPImage中的队列管理方式设计的很巧妙，值得学习和分享。 
  在GPUImageOutput.h这个文件，声明了5种不同类型的队列执行方法：void runOnMainQueueWithoutDeadlocking(void (^block)(void));
void runSynchronouslyOnVideoProcessi]]></description><category></category></item><item><title><![CDATA[git ignore project.xcworkspace无效]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51735629</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51735629</guid><author>lvmaker</author><pubDate>Wed, 22 Jun 2016 17:02:19 +0800</pubDate><description><![CDATA[今天在使用.gitignore的过程中，遇到了一个很奇葩的问题，在gitignore中已经添加了*.xcuserdata。但是每次改一个文件，都会到导致 .xcuserdata文件修改，不能忍受。使用了下面的方法来解决问题。在终端中输入:$ git rm --cached XXX.xcodeproj/project.xcworkspace/xcuserdata/mac.xcuserdatad/Use]]></description><category></category></item><item><title><![CDATA[把自己的开源库添加cocoapods]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51723589</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51723589</guid><author>lvmaker</author><pubDate>Mon, 20 Jun 2016 21:47:32 +0800</pubDate><description><![CDATA[CocoaPods提供了一种令人Amazing的方式来引入第三方库，作为一个ios开发者，没使用过CocoaPods是一件很遗憾的事情。我从14年开始接触CocoaPods,并在自己的项目中广泛使用它来引入第三方库。我从事ios开发5年多来，积累了大量经过了验证的类别、定制的UI等等OC代码，每次进行新项目开发，都会把积累的这些代码copy到新项目中，需要做大量的重复工作，有诸多不便，于是打算将这些]]></description><category></category></item><item><title><![CDATA[ios获取所有相册的视频并播放]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51659847</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51659847</guid><author>lvmaker</author><pubDate>Mon, 13 Jun 2016 18:39:46 +0800</pubDate><description><![CDATA[端午节前，把公司的项目忙完了，这几天开始继续DDPlayer的开发，熟悉代码之后，首先要解决的是：获取并播放相册里面的视频。 
   对于相册中的视频，我需要关注视频的名称、时常、格式、缩略图等信息，因此，定义了表示视频信息的对象。//AlbumVideoInfo.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>@interfac]]></description><category></category></item><item><title><![CDATA[重要经验八---UIImage转换为CVPixelBufferRef]]></title><link>https://blog.youkuaiyun.com/lvmaker/article/details/51508121</link><guid>https://blog.youkuaiyun.com/lvmaker/article/details/51508121</guid><author>lvmaker</author><pubDate>Thu, 26 May 2016 16:01:45 +0800</pubDate><description><![CDATA[最近做一个视频处理的项目（Rokk!），需要将opengl渲染后的特效保存为视频，由于使用了第三方库，所以不能直接使用opengl的framebuffer，后面使用了一种比较蛋疼的方式：使用glReadPixels来读取每一个渲染帧，转换为UIImage，然后将UIImage转换为CVPixelBufferRef，使用AVAssetWriterInputPixelBufferAdaptor和AVAs]]></description><category></category></item></channel></rss>