获得徽章 0
赞了这篇沸点
赞了这篇文章
赞了这篇文章
赞了这篇沸点
#iOS知识小集#「 数组去重的新姿势 」
当我们需要对一个数组进行去重操作时,通过会初始化一个新数组,遍历旧数组,在遍历过程中,如果新数组中不包含当前的元素,便将元素加入到新数组中去,但其实KVC集合运算符可以valueForKeyPath:方法中使用keyPath符号来执行方法,最简单的就是@distinctUnionOfArrays,他会返回了一个去除重复元素的数组。在图一中,uniqueArray便是oldArray去重后的结果,因为oldArray是一个字符串数组,所以@distinctUnionOfObjects.self里面用到是.self,代表元素本身作为是否重复的key。
当我们需要对一个数组进行去重操作时,通过会初始化一个新数组,遍历旧数组,在遍历过程中,如果新数组中不包含当前的元素,便将元素加入到新数组中去,但其实KVC集合运算符可以valueForKeyPath:方法中使用keyPath符号来执行方法,最简单的就是@distinctUnionOfArrays,他会返回了一个去除重复元素的数组。在图一中,uniqueArray便是oldArray去重后的结果,因为oldArray是一个字符串数组,所以@distinctUnionOfObjects.self里面用到是.self,代表元素本身作为是否重复的key。
展开
2
5
赞了这篇文章
#iOS知识小集#「 URLWithString:relativeToURL: 方法的解释 」
我们在 AFNetworking 中可能注意到过这个方法,平时的开发中也可能会用到。为了后文描述方便,这里把方法参数名写完整:URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL 这个方法的作用是使用 URLString 来生成一个与 baseURL 相关联的完整 URL。我的个人理解是:URLString 描述相对位置,baseURL 确定基地址,二者合起来确定一个绝对的 URL。(当 URLString 自身就是一个完整路径时,baseURL 无效)
此外,AFNetworking 源码中也提醒我们,此处使用的 baseURL 需要带上末尾的斜杠,这样才会按你的期望生成正确的 URL。关于两者的不同情况相结合产生结果的例子,可以参见下面引用的文章,建议配合阅读。
我们在 AFNetworking 中可能注意到过这个方法,平时的开发中也可能会用到。为了后文描述方便,这里把方法参数名写完整:URLWithString:(NSString *)URLString relativeToURL:(NSURL *)baseURL 这个方法的作用是使用 URLString 来生成一个与 baseURL 相关联的完整 URL。我的个人理解是:URLString 描述相对位置,baseURL 确定基地址,二者合起来确定一个绝对的 URL。(当 URLString 自身就是一个完整路径时,baseURL 无效)
此外,AFNetworking 源码中也提醒我们,此处使用的 baseURL 需要带上末尾的斜杠,这样才会按你的期望生成正确的 URL。关于两者的不同情况相结合产生结果的例子,可以参见下面引用的文章,建议配合阅读。
展开
评论
1
赞了这篇文章
赞了这篇沸点
赞了这篇文章
#iOS知识小集#「 获取UIImage时的时间差异对比 」
对比2组数据,数据由iPhoneX模拟器采集,下面这两组数据不同操作系统可能数据有所差别。整体来说从aseet中获取图片性能更优,在不同设备下 [UIImage imageNamed:inBundle:compatibleWithTraitCollection:] 获取图片可能优于 [UIImage imageNamed:]。希望对你有所启发。知识小集上次发布了一个这方面的文章,可以参考一下。
其它设备采集数据来源于 OPrior to iOS 9, loading images from your b...
t.cn。如图1
「 1、从 bundle 中获取图 」
使用imageNamed:获取图,耗时为 81ms; 如图2
「 2、从 asset 中获取图,把上面代码的图片移到asset中 」
a、采用 imageNamed:从asset中获取图片,耗时 3ms:
imageNamed: image:<UIImage: 0x60000012a0d0>, {750, 750}, time=3
b、采用 imageNamed:inBundle:compatibleWithTraitCollection:从asset中获取图片,耗时 13ms:
inBundle: image= <UIImage: 0x6000038bd960>, {750, 750}, time = 13
对比2组数据,数据由iPhoneX模拟器采集,下面这两组数据不同操作系统可能数据有所差别。整体来说从aseet中获取图片性能更优,在不同设备下 [UIImage imageNamed:inBundle:compatibleWithTraitCollection:] 获取图片可能优于 [UIImage imageNamed:]。希望对你有所启发。知识小集上次发布了一个这方面的文章,可以参考一下。
其它设备采集数据来源于 OPrior to iOS 9, loading images from your b...
「 1、从 bundle 中获取图 」
使用imageNamed:获取图,耗时为 81ms; 如图2
「 2、从 asset 中获取图,把上面代码的图片移到asset中 」
a、采用 imageNamed:从asset中获取图片,耗时 3ms:
imageNamed: image:<UIImage: 0x60000012a0d0>, {750, 750}, time=3
b、采用 imageNamed:inBundle:compatibleWithTraitCollection:从asset中获取图片,耗时 13ms:
inBundle: image= <UIImage: 0x6000038bd960>, {750, 750}, time = 13
展开
评论
1
#iOS知识小集#「 SourceTree 提交信息面板消失了怎么办? 」
今天分享一条关于 SourceTree 的不常见但是在遇到后很实用的 tips。
相信大部分同学使用的 git GUI 工具都是 SourceTree,不知道大家有没有遇到,commit message 面板消失再也出不来的情况。最近某次不知道怎么操作的,选中某个 commit 后,底部始终不显示这条 commit 的详情,用起来很别扭。如图1所示,正常情况应该类似图2。
后来去 SourceTree 官网上搜了一下,发现有同样的情况,解决方案就是在终端运行如下命令
defaults delete com.torusknot.SourceTreeNotMAS "NSSplitView Subview Frames repowindow_LogViewDescSplitter"
然后重启 SourceTree,重启之后你会发现熟悉的 commit 信息面板又回来了!
今天分享一条关于 SourceTree 的不常见但是在遇到后很实用的 tips。
相信大部分同学使用的 git GUI 工具都是 SourceTree,不知道大家有没有遇到,commit message 面板消失再也出不来的情况。最近某次不知道怎么操作的,选中某个 commit 后,底部始终不显示这条 commit 的详情,用起来很别扭。如图1所示,正常情况应该类似图2。
后来去 SourceTree 官网上搜了一下,发现有同样的情况,解决方案就是在终端运行如下命令
defaults delete com.torusknot.SourceTreeNotMAS "NSSplitView Subview Frames repowindow_LogViewDescSplitter"
然后重启 SourceTree,重启之后你会发现熟悉的 commit 信息面板又回来了!
展开
评论
3
#iOS知识小集#「 关于Xcode Simulator无法启动的原因 」
前几天为了清理 Xcode 缓存,误删了文件,编译时仍然有一堆模拟器可以选择,但是却无法启动模拟器。
先是 Command + R 后等待一段时间报出超时错误。如图一。
再在应用程序中找到 Xcode,打开包内容,找到 Developer-->Applications-->Simulator,双击后提示磁盘中并没有模拟器设备。如图二。
进入文件夹 ~/Library/Developer/CoreSimulator/Devices,发现目录下是空的,这就是导致模拟器无法启动的原因。
按顺序找到 Xcode-->Window-->Devices and Simulators,点击左下角的【+】添加新的模拟器,完成后再次打开 ~/Library/Developer/CoreSimulator/Devices,会发现目录下有内容,如图三。进入文件夹,打开device.plist,里面就是刚添加的模拟器的设备信息,然后就可以正常运行项目了。
前几天为了清理 Xcode 缓存,误删了文件,编译时仍然有一堆模拟器可以选择,但是却无法启动模拟器。
先是 Command + R 后等待一段时间报出超时错误。如图一。
再在应用程序中找到 Xcode,打开包内容,找到 Developer-->Applications-->Simulator,双击后提示磁盘中并没有模拟器设备。如图二。
进入文件夹 ~/Library/Developer/CoreSimulator/Devices,发现目录下是空的,这就是导致模拟器无法启动的原因。
按顺序找到 Xcode-->Window-->Devices and Simulators,点击左下角的【+】添加新的模拟器,完成后再次打开 ~/Library/Developer/CoreSimulator/Devices,会发现目录下有内容,如图三。进入文件夹,打开device.plist,里面就是刚添加的模拟器的设备信息,然后就可以正常运行项目了。
展开
评论
3