IOS 错误集锦
开发中遇到很多小错误大错误, 很多时候下次遇到可能已经忘记,这里做一个记录,
注:很多是个人的理解不一定是正确答案
1 上传包ERROR ITMS-90206
|
|
2 上传包error -22421
原因 苹果服务器抽风多次尝试ok
3 上传包 -4238
原因 自己抽风忘记更改版本号码有重复的
This application’s application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed
原因:这个项目App已经存在这个真机上了,这个App是旧的identifier运行的。
真机手动删除也ok
解决方法:Xcode —>Window —> Devices —> 自己的真机 —> installed Apps —-> 删除这个App —-> 重新运行
Cannot Synthesize Weak Property Because The Current Deployment Target Does Not Support Weak References
在用 pod 升级依赖(Installing StreamingKit 0.1.30 (was 0.1.29)) 项目后报错:
原因 :
https://github.com/tumtumtum/StreamingKit/blob/master/StreamingKit.podspec
最低支持ios4.3 不支持weak
解决方案:
在 Podfile 下面添加如下代码:
|
|
From: https://zhuanlan.zhihu.com/p/35251092
升级到 Swift 4.1 的两个 Crash
前两天升级了 Xcode 9.3, 也就升级到 Swift 4.1。使用它来编译一些例子工程,源码基本不用修改,只是报了警告,几个地方需要将 flatMap 名字修改成 compactMap。见提案SE-0187。
但工程运行起来,出现两个 Crash,记录一下。
1.
Crash 在如下地方,详细情况参见 [Swift/SR-7240]
swiftgetObjectType
UIApplicationDelegate.application(:open:sourceApplication:annotation:)
原因是
func application(_ application: UIApplication,
open url: URL,
sourceApplication: String?,
annotation: Any) -> Bool
已经在 iOS 9.0 中废弃了。需要将其修改为
public func application(_ app: UIApplication,
open url: URL,
options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
2.
例子工程使用了一个 HandyJSON 的库,升级到 Swift 4.1 后 Crash 了。
HandyJSON 应该是裁剪使用了一些 Reflection 代码。标准的 Swift Api 还没有完整反射功能的,HandyJSON 的某些接口实际上利用了 Swift 对象,没有公开的内存布局进行赋值,这种做法是一种 Hack 手段,比较危险。
Crash 在
var numberOfFields: Int {
return Int(pointer.pointee.numberOfFields)
}
修正方法见, Xcode9.3 Swift4.1 crash 解决方案 #239
苹果每次升级,并不追求完全的兼容。升级后,原来的 App 总会有些小问题,强迫着开发者跟进修改。AppStore 很多两三年没有更新的 App, 实际上已经不能运行了。而微软就很讲究兼容性,Win95 上编译好的软件,在 Windows 7 也照样可以跑起来。
打破兼容性,抛弃历史包袱,的确可以使得生态更好。但打破兼容,假若开发者不快速跟进,整个生态早就崩掉了。苹果命好,如此任性。
【iOS 开发】解决使用 CocoaPods 执行 pod install 时出现 - Use the $(inherited)
flag … 警告
pod 升级1.5.0 后出了不少警告
|
|
解决方法
打开项目 Target - Build Settings ,搜索 Other Linker Flags ,在这个设置上加入 $(inherited) 。
打开项目 Target - Build Settings,依次搜索如下图所示的警告上提示的设置名称,将这些设置选项全部改为 $(inherited) ,或者选中这些设置按下 delete 键恢复原设置。
如果有 FRAMEWORK_SEARCH_PATHS 这个设置的警告的话,最好先把当前的设置项记录下来,然后选中设置按下 delete 以后,再把之前的设置加进去,否则编译可能会出现很多报错。
然后重新执行 pod install 或者 pod update 就会发现警告消失了。
如果我的方法不能够解决你的问题的话,可以试一下网上的另一种方法,就是点击项目文件 project.xcodeproj ,右键显示包内容,用文本编辑器打开 project.pbxproj ,command + F 搜索 OTHER_LDFLAGS ,删除搜索到的设置,command + S 保存,然后重新执行 pod install 或者 pod update 。
更新xcode9.3 出现Block implicitly retains ‘self’;explicitly mention ‘self’ to in dicate this… 警告,
解决 Building Setting -> 搜索
implicit retain of ‘self’
将对应的值改为NO
xcode报错, 系统迁移后, 运行错误,提示权限问题
Permission denied Command PhaseScriptExecution failed with a nonzero exit code
错误提示没有权限,
chmod a+x .sh文件权限 (注意拷贝过来的地址可能需要转译)
install_url
to use ShareThis. Please set it in _config.yml
.