<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Panwave的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Panwave</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Panwave]]></copyright><item><title><![CDATA[主线程调用locationServicesEnabled方法提示可能导致 UI unresponsiveness]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/140634768</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/140634768</guid><author>Panwave</author><pubDate>Tue, 23 Jul 2024 14:11:24 +0800</pubDate><description><![CDATA[在 iOS 开发中，调用方法时会提示这是因为在主线程上调用这个方法可能会导致 UI 无响应。为了避免这种情况，可以使用异步方法来检查定位服务是否启用。]]></description><category></category></item><item><title><![CDATA[在 Vue.js 中使用自定义指令（directive）来实现图片加载失败时显示默认占位图的功能]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/134502172</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/134502172</guid><author>Panwave</author><pubDate>Mon, 20 Nov 2023 10:35:55 +0800</pubDate><description><![CDATA[指令负责设置默认占位图的地址。通过在模板中使用这两个指令，你可以实现图片加载失败时显示默认占位图的效果。/* 可以添加样式，控制默认占位图的大小、位置等 */// 设置元素的 src 属性为默认占位图的地址。// 将图片的 src 设置为默认占位图的地址。指令负责设置图片加载失败时的回调函数，而。// 设置图片加载失败时的回调函数。// 图片地址，可以是动态获取的。// 指令绑定到元素时调用。// 指令绑定到元素时调用。// 默认占位图的地址。// 创建自定义指令。// 创建自定义指令。]]></description><category></category></item><item><title><![CDATA[如何修复iOS端格式化字符串漏洞？]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/129726849</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/129726849</guid><author>Panwave</author><pubDate>Thu, 23 Mar 2023 11:12:19 +0800</pubDate><description><![CDATA[使用NSLog的%@参数代替%s参数，这可以使得输出一个NSString而不是一个C字符串。这样做可以自动解决格式注入问题，并且可以避免攻击者使用Format String漏洞来执行任意代码。在上述例子中，我们使用了%.50s格式化选项，它告诉printf只打印前50个字符，这样可以避免攻击者使用过长的格式串导致的溢出问题。如果需要使用C字符串，请使用下面这种方式来格式化，这可以避免攻击者使用Format String漏洞来执行任意代码。最好的方法是完全避免使用格式化字符串。]]></description><category></category></item><item><title><![CDATA[UIWebView与JS的交互]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/50147415</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/50147415</guid><author>Panwave</author><pubDate>Wed, 02 Dec 2015 14:01:21 +0800</pubDate><description><![CDATA[UIWebView与JS的交互，说白了就是Objective-C和JavaScript的相互调用。Objective-C调用JavaScript代码的方法，是通过UIWebView的 - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;的方法来实现的。该方法向UIWebView传递一段需要执行的JavaScr]]></description><category></category></item><item><title><![CDATA[看源码学知识（不定期更新）]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/45915971</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/45915971</guid><author>Panwave</author><pubDate>Fri, 22 May 2015 13:15:33 +0800</pubDate><description><![CDATA[// MBProgressHUD.m（版本 0.9.1）里面MBBarProgressView类的drawRect:方法里：
if (isnan(angle)) angle = 0;isnan()函数用来判断一个变量（比如上面的angle）是不是数字，如果不是数字，返回YES 
(isnan = is not a number)忽略编译器警告（使用了已废弃方法、创建未使用的变量等），例子： 
-Wd]]></description><category></category></item><item><title><![CDATA[Objective-C的Runtime特性]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/45894151</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/45894151</guid><author>Panwave</author><pubDate>Thu, 21 May 2015 16:54:32 +0800</pubDate><description><![CDATA[// 判断给定的Class是否是一个元类
    NSObject *object = [[NSObject alloc] init];
    Class class = [NSObject class];
    BOOL yup = class_isMetaClass(object_getClass(class));
    BOOL nope = class_isMetaClass(obje]]></description><category></category></item><item><title><![CDATA[CGContextAddArcToPoint用法]]></title><link>https://blog.youkuaiyun.com/Panwave/article/details/45892879</link><guid>https://blog.youkuaiyun.com/Panwave/article/details/45892879</guid><author>Panwave</author><pubDate>Thu, 21 May 2015 15:41:09 +0800</pubDate><description><![CDATA[CGContextAddArcToPoint方法及参数：void CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1, 
CGFloat x2, CGFloat y2, CGFloat radius)下图中：P1 是当前路径所在的点, r 是上面函数中的radius, 红色的线就是CGContextAddArcToPoint绘制]]></description><category></category></item></channel></rss>