1.The app references non--public selectors in Payload/xxxx/xxxxx : xxxxx
You can't remove this warning. You may get this warning just for using a selector in your own code or third party code(may be because of facebook sdk) that has the same name as some selector that is marked as non-public. Happens to me all the time. Never got rejected for it.
So you won't worry about this warning. And also see this stack questionto avoid rejection, find and remove unwanted framework.
解决方法:首先这个警告不会造成上传失败,也不会造成审核被拒。其次可以通过移除代码中警告的那些代码,并移除多余不使用的系统类库(framework),使警告消失。
2.模拟器运行失败,并提示“Failed to chmod /user/.........”
解决办法:可通过退出模拟器再次运行项目,会重新调用出模拟器。不用重置模拟器。
3. Archive 后点击 validation按钮后出现如下报错。
解决办法:出现这个问题是因为,这个 Buidle identifter 没有在 iTunes Connect中心注册过,所以才会出现这个问题。
顺便说一下,有一次打包发到 蒲公英上,扫码安装的时候特别的慢,等了30分钟才安上,一度感觉安装不上,耐心等待才好,又从新打包上传了一次,扫描新的码安装就很快速正常了。
4.在iOS9系统的手机上使用SDWebImage不显示图片,在iOS10、iOS11手机上、模拟器上都是显示的
因为网络请求链接使用的是 https 所以info.plist中就没有设置App Transport Security Settings 结果使用SDWebImage加载图片 在iOS10、iOS11手机上、模拟器上都是显示的,可是在 iOS9的手机上就是不显示,无奈再次在info.plist中就没有设置App Transport Security Settings 设置为 ture 就行了。而且不会影响 https的访问。
PS: iOS10.3.2 系统下 UITabbar 的点击效果添加了选中背景,这在iOS11和iOS9中是没有的,没注意,当时吓一跳以为是Bug,结果是系统特色。
5. iOS11上 MBProgressHUD 不显示
事情是这样的,iOS11之前的手机上点击提交按钮都会提示“XXXX不能为空”,可是在刚刚更新的iOS11的手机上,点击按钮的时候并没有提示,当时以为是按钮没有触发点击事件,最后验证是
MBProgressHUD 不在iOS11上显示。最后找出问题所在。
原代码
新代码
可以看到,iOS11中应该是添加了新的一层 UIInterrectiveHightEffectWindow ,而且是隐藏起来的,所以加载上也是看不见的,误以为按钮没有响应。
6.谷歌浏览器(其他浏览器)打不开简书网址一直显示 Still unable to dial persisent://www:jianshu.com:80 after 3 attempts
这个问题困扰了我好几天,一直没在意,以为是简书服务器那边的问题,最后我ping了一下发现,这台电脑是可以访问到简书服务器的,问了简书客房,他们说是少部分网络是会出现这个问题的,简直是扯淡。
下面说一下Mac下如何使用ping,打开终端 输入 ping xxxxx 注意中间有空格。Mac下会一直ping下去,可以使用 control+C 来取消 ping操作。
既然能访问那就是浏览器的问题了
翻译一下
unable go get a connection:Still unable to dial tcp://xx:80 after 3 attempts
无法获得连接:3次尝试后仍然无法拨打TCP/IP:80
问题原因
下面说说问题原因,就是因为一些代理软件设置影响了,或者他们已经失效了。但是谷歌代理设置还在,所以导致的。
解决方法
把浏览器的代理设置关闭使用代理,在ie 右上角 设置》internet选项》连接》局域网设置 把使用自动代理去掉就行了。(windows下的谷歌浏览器)
简书就速度的打开啦。
7.崩溃到.main文件时
造成崩溃的原因: [tncString addAttribute:NSFontAttributeName value:@15 range:(NSRange){0,[tncString length]}];
正确的代码: [tncString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:15] range:(NSRange){0,[tncString length]}];
我们仔细观察会发现,一般的工程崩溃时都会默认的把底部控制试图的第一个选中,这就造成了我们无法看到具体崩溃时的堆栈信息,把第一个取消选中就可以看到崩溃时详细的位置了。
8. Reveal 无法正常使用
不知道什么时候,按照以前的步骤:
lbz库、
ObjC、
Reveal.framework
还是无法使用Reveal
按照图中所展示的那样,把Reveal.framework 拖进工程链接中就可以解决这个问题啦
9.拖进工程中的图片就是不显示
这个问题是在Xcode9中经常出现的问题
解决办法:把图片拖到 Images.xcassets 中即可加载显示啦。
10. block 中极易造成的崩溃问题。
我们有时候传值喜欢使用 block,block确实很方便,不过要注意以下场景。
类A有一个block属性用来传值,一旦我们在 A中有对这个属性进行赋值,那么所有类A的对象都需要实现这个 block属性方法,如果某个类A的对象没有实现这个block属性方法(不需要传值),就会造成崩溃,
block不用于delegate ,使用delegate,我们可以进行这样的判断,这样实不实现 代理都不会崩溃。
if ([self.mydelegate respondsToSelector:@selector(backindexMethod:)]) {
[self.mydelegate backindexMethod:[dataDic[@"popIndex"] integerValue]];
}
可是block确无法这样判断,一旦类A中对属性block赋值,所有的类A对象都必须在使用的时候实现这个block属性方法,否则就会出现崩溃