那片树海

用心做一件工艺品


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

应用程序无法打开或文件损坏

发表于 2019-05-27 | 更新于: 2026-05-11

Mac 在使用非 App Store 下载的应用时,经常会遇到提示 ““xxx.app”已损坏,打不开。您应该将它移动到废纸篓” 或者 “打不开“xxx.app”,因为它来自身份不明的开发者”。

解决方案:将 “系统偏好设置->安全性与隐私->通用” 下面的 “允许从以下位置下载的 App” 修改为 “任何来源”

问题 1:不能修改设置
点击安全性与隐私面板左下角的 “🔐 点按锁按钮以进行更改”,输入电脑管理员密码,即可修改

问题 2:“允许从以下位置下载的 App” 下没有 “任何来源” 选项
打开终端,输入 sudo spctl --master-disable 回车,然后输入电脑管理员密码回车执行,就可以在设置面板上看到 “任何来源” 选项了

问题 3:提示 “无法打开“xxx”,因为无法确认开发者的身份”
右键应用程序、打开或者按住 control 点击应用程序

问题 4:已经开启任何来源,但还是打不开(macOS Catalina 10.15 以上会遇到)
打开终端,输入以下命令 sudo xattr -d com.apple.quarantine /Applications/xxxx.app ,重启应用即可。
如果应用名字有空格,请在命令当中转义,或者先修改应用程序名称,可以打开后再改回来。

如何绘制好iPhone上的1像素

发表于 2019-04-02 | 更新于: 2026-05-11

最近在开发过程中遇到了一个问题,就是当我用 22.1999…的约束(请注意这里是约束)设置一个 CollectionView 的左右边距时,在 iPhone 8 和 iPhone X 上绘制出来的左边分别为 22 和 22.33,这微小的数值差距,导致了本该显示 4 个元素的 CollectionView 在 iPhone X 上只显示了 3 个,问题实例看这里。

为什么变成了 22 和 22.33

iPhone 8 iPhone X
UIKit Size 375*667 375*812
分辨率 750*1334 1125*2436
UIKit Scale factor 2 3
阅读全文 »

CocoaPods的AppIcon错误

发表于 2019-03-15 | 更新于: 2026-05-11

不知道大家在 pod sepc lint 或者 pod repo push 验证或者推自己的 podspec 时有没有遇到这个错误

1
error: None of the input catalogs contained a matching stickers icon set or app icon set named "AppIcon"

当初我使用的还是 1.4.0 的版本,要使用一个新特性,更新到了 1.5.x,结果报了上面的错误,本来以为会在后面的版本当中修复,结果在 1.5.x 和 1.6.x 的版本中都没有解决,现在有 1.7.0 的 beta 版了,不知道这个问题修复没有,等 release 版本发布之后去看下。那我们要怎么度过这段艰难的时期呢,大致有以下几种方案:

  1. 拿到 podspec 文件强推到 podspec 仓库
  2. 注掉 CocoaPods 校验逻辑
  3. 在你的 pod 当中添加一个冗余的 Images.xcassets
  4. 不同版本的 CocoaPods 配合使用
阅读全文 »

给你的哈希算法加点“盐”

发表于 2019-03-15 | 更新于: 2026-05-11

我们在平常的开发过程中为了保证信息的完整性以及安全性,我们通常都会对信息进行哈希计算签名,然后比对签名信息。

但是黑客可以通过彩虹表反推原始输入,为了增加黑客的破解难度,我们会对原始输入做一些处理,通常的做法是加入另外一个输入(也就是盐)混淆,以 sha1 为例,大概是 sha1(message+salt) 这个样子。

注:message+salt 并不是表示字符串拼接,是表示经过特定的计算或者字符组合。

Hmac 算法(Keyed-Hashing for Message Authentication)是一个将盐加入哈希计算的标准算法,它会在计算过程中将 salt 混入计算过程中,而且它针对所有的哈希算法都通用,相比较我们自己的实现更标准也更安全。

阅读全文 »

2018年个人总结

发表于 2019-01-28 | 更新于: 2026-05-11

20190128-1

阅读全文 »

iOS单元测试-各种问题

发表于 2019-01-09 | 更新于: 2026-05-11

编写用例时注意

1.用例只针对 SDK 对外开放的入口

2.注意异常情况和边界值

3.注意用例之间的依赖情况

单测用例如何按照顺序执行

测试函数的执行顺序与测试的字符大小有关系,如- (void)test001Example > - (void)test002Example > - (void)testExample

理论上单元测试不应该控制用例的执行顺序,每个 case 都能够单独执行,但是针对某些特殊的情况,可以适当使用一次此特性。

阅读全文 »

iOS单元测试-代码实现

发表于 2019-01-09 | 更新于: 2026-05-11

iOS 的单元测试代码我们使用 Xcode 自带的 XCTest,XCTest 可以从逻辑和性能两个方向进行测试,下面我们来一起看下如何实现。

逻辑测试

1.为工程添加一个单元测试的 Target(已经有的可以略过这一步)

阅读全文 »

记一次cp错误

发表于 2018-11-15 | 更新于: 2026-05-11

前两天在编写脚本时遇到一个奇怪错误

1
2
rm -rf /Users/yzq/b/*
cp -r /Users/yzq/a/* /Users/yzq/b

使用这两个命令将 a 下面的工程拷贝的 b 中,然后编译 b 却始终报错,提示某个 framework 文件重复

a 工程编译是没有问题的
手动清空 b,将 a 中的文件手动复制到 b 编译也没有问题

最初以为是 rm -rf /Users/yzq/b/* 命令没有清除掉某些缓存或者隐藏文件之类的,后来验证发现和 rm 无关

经过文件比较发现报错的 framework 与正确的 framework 下某个文件存在差异,正确的是以链接(快捷方式)的方式存在的,而错误的是一个文件夹,文件夹下还有对应的文件,原来这种错误是我们复制时没有保留对应的文件属性导致的,使用 cp -a /Users/yzq/a/* /Users/yzq/b 进行复制即可解决,因为 -a 在复制的同时保留了文件的链接及文件属性

所以正确的命令应该是

1
2
rm -rf /Users/yzq/b/*
cp -a /Users/yzq/a/* /Users/yzq/b
阅读全文 »

Xcode 10 library not found for -lstdc++.6

发表于 2018-10-10 | 更新于: 2026-05-11

最近升级了 Xcode 10,发现编译的时候报如下错误,在 Xcode 9 上正常:

1
library not found for -lstdc++.6

这个是因为 iOS 12 废弃了 libstdc++,也删除了相关的库,改为使用 libc++替代

解决方案

将缺失的库拷贝到原来对应的目录下,使 Xcode 能够引用

将相应的库拷贝到如下四个目录当中,才能保证模拟器和真机都能用,缺少哪个库拷贝哪个就行,不用全部拷贝

1
2
3
4
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/

文件下载:libstdc++

其他

如果拷贝进去之后重启 Xcode 编译还是报这个错误,建议在 TARGETS -> Build Phases -> Link Binary With Libraries 当中把当前依赖添加进去

多说两句

这种方法虽然可以暂时解决问题,但最好还是升级下相关库,使用新的库和 API。

编写一个基于node的CLI

发表于 2018-09-05 | 更新于: 2026-05-11

最近因为需要给其他同事提供一些方便开发的工具,就写了一个基于 node 的 CLI,下面给大家分享下怎么自己去动手写一个基于 node 的 CLI。

原理

当前端工程安装到全局目录下之后,可以直接通过别名来执行 package.json 当中 bin 下面的 js 文件,我们就是通过编写这个 js 文件来实现相应命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
{
"name": "testnode-cli",
"version": "1.0.0",
"description": "CLI测试",
"main": "index.js",
"bin": {
"testnode": "./bin/index.js"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git@github.com:yangzq007/testnode-cli.git"
},
"author": "yangzq007@126.com",
"license": "ISC",
"dependencies": {
"commander": "^2.15.1"
}
}
阅读全文 »
123…7
树海

树海

61 日志
1 分类
21 标签
RSS
GitHub Weibo
© 2026 树海
由 Hexo 强力驱动
|
主题 — NexT.Muse