常见问题(一)

1.rn 验证失败

在运行 react-native run-ios 时,会报如下错误,程序在模拟器上启动后,就崩溃了.上网查之后,有的说重启模拟器,有的说重新下载 demo 文件,结果都没成功.
无赖之举,我重启了一下Mac, 结果尽然好了....比较一下异常,竟然是代理没有打开,没有翻墙成功的.一翻墙就会崩溃,可能是翻墙后有网络延迟,证书验证失败的原因.

1 Installing build/Build/Products/Debug-iphonesimulator/AwesomeProject.app
2 
3 Launching org.reactjs.native.example.AwesomeProject
4 
5 org.reactjs.native.example.AwesomeProject: 1147

2.tableview 无法滑动

.(Bug) iOS 7 的 iPhone5c 下,scrollview 里面的 tableview 第一次可以滑动,若滑到其他位置后,再回到当前的 tableview,就不能向下滑动了.
(解决) 不能滑动,无非是两个方案①查 contentsize ②查层次结构,是不是有 UIView 覆盖…或者当前 view 的滑动区域太小,有问题...
(1) 在滑动 scrollview 时打印它和它的子 view 的 frame/ contentsize, 没发现什么问题.
(2) 在以上滑动时,打印不能下滑的tableview的父视图的宽高,结果真的有异常,是大于屏幕尺寸320的.
(3) 把屏幕尺寸改成正常后,就么有类似问题了.

(结果) iOS7 对scrollview中超出距离的 view 可能做了某些裁剪处理,是 view 不能处理下滑事件.

3.No such file or directory

No such file or directory: '/Users/xxxxx/Desktop/xxxx/xxxxx/src/React-native/node_modules/react-native/React/CSSLayout/CSSLayout.c'
(1) 这是 RN 的问题,感觉像是导入的文件不存在,删除了build phases下的compile sources 对应文件后,重新导入,依然有问题.
(2) 感觉像是缓存的问题,使用 npm cache clear方法清除缓存后,也无法解决问题.
(3) 第二天,重新审视这个文件,它说没有这个文件,我就去这个路径找不就得了吗...结果不存在这个路劲,而且路径中有一个 user name 不是我的.
(4) 我在我的项目中搜索是否谁调用了这句话,结果还真有调用它的地方,改一下路径就可以了...

4.造成block 循环引用的原因

A.property-->B-->block-->A.property.(PS:只有 A 拥有了 B ,并且 B 拥有了block, 并且该 block 中引用了 A,才会造成循环引用)
(<font color=blue>若 A 拥有了 B, B 的方法调用了 A, 则不会引起循环引用</font>)

1  [_inputView addBarrageSettingHighActionBlock:^(BOOL isSelected) {
2         [weakSelf bringSubviewToFront:weakSelf.inputView];
3     }];

5.no rule to Process file when build phases has this file?

在build phases中搜索当前文件,移除掉就 ok 了.

6.'couldn't find a common superview

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'couldn't find a common superview for <UILabel...往往是在使用Masonry自动布局时,没有给当前视图添加父视图.

7. prototype table cells must have reuse identifiers.

这种警告可以删除当前 storyboard 或 xib 中的cell, 就不会有警告了.dequeueReusableCellWithReuseIdentifier:forIndexPath:方法会查找storyboard 或 xib 中的cell, 若reuseid 一致,就会找 xib 中的 cell, 默认是 UITableViewCell, 就不是我们自己创建的 cell 了.

8.DEBUG 工具栏警告

以下警告往往发生于在UITableViewCell中添加子控件时,添加到了contentView中,而设置自动布局的约束时,是相对于UITableViewCell来添加的,也就是父视图的父视图.

1 "<MASLayoutConstraint:0x6000000b9a40 UILabel:0x7f9c75e0ea80.top == PTVHotLiveListCell:0x7f9c76808000.top + 10>",
2 "<MASLayoutConstraint:0x6000000b9ce0 UILabel:0x7f9c75e0ea80.top == UITableViewCellContentView:0x7f9c75d058f0.top + 10>",
3 "<NSAutoresizingMaskLayoutConstraint:0x60800009f540 UITableViewCellContentView:0x7f9c75d058f0.(null) == 201.25>",
4 "<NSAutoresizingMaskLayoutConstraint:0x60800009f9f0 UITableViewCellContentView:0x7f9c75d058f0.height == 251.5>",
5 "<NSAutoresizingMaskLayoutConstraint:0x600000281180 PTVHotLiveListCell:0x7f9c76808000.(null) == 0>"

9.优先级理解错误

忽略运算符的优先级,出现如下问题:NSInteger index = indexPath.row - _dataMgr.carouselDataArray.count > 0 ? 1 : 0;

10.tableview 的高度不能随 cell 的 height 自适应

可以使用以下代码
 1 _tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 2 _tableView.autoresizesSubviews = YES; 

11.HMSegmentedControl让文字自动居中

更改segmentWidthStyle属性,让文字宽度固定.

12.collectionview中的 cell 的内容被裁减

对于 collectionview 中的 cell, 若设置了layout 的 itemsize,则超出这个itemsize的子视图都会被裁剪.....当 cell 中的子视图很多时,这点很容易遗忘.

13.状态栏颜色

对于顶部导航栏隐藏的情况,要想改变状态栏颜色可以通过改变 self.view 的颜色来改变.

14.block 的两种写法

1 typedef void(^ShowShadowView)(BOOL show);
2 @property (nonatomic,copy) ShowShadowView showShadowView;
1 @property (nonatomic,copy) void (^showShadowView) (BOOL show);

15.一个控件显示正确,另一个控件显示不正确.

可以先注释掉错误调用控件的类的属性,在每一个出红点的地方和正确调用的类进行比较.

16.若设置 tableview 的背景颜色不生效,可以尝试设置背景视图.

1     UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)];
2     footerView.backgroundColor = [UIColor whiteColor];
3     _tableView.backgroundView = footerView;

 17.无法设置 section 之间的距离

当 tableview 在初始化时,被设置成了 UITableViewStyleGrouped 类型的,就无法通过heightForHeaderInSection代理方法设置 section 间距,必须把 tableview 的类型改为 UITableViewStylePlain.

18.sh: /Applications/XCode.app/Contents/Developer/usr/bin/xcrun: No such file or directory(crash崩溃)

  <1> 在使用symbolicatecrash解析崩溃文件的时候,提示如题的 bug,或者Error: can't find tool named 'otool' in the macosx SDK or any fallback SDKs 这样的 bug, 很多人觉得是终端的问题,需要更新一下终端,可总是解决不了问题....

  <2> 于是换种思路,会不会是symbolicatecrash不是最新的呢?把symbolicatecrash更新以后,就没有任何警告了.

  (PS:Xcode7.3 symbolicatecrash路径
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash)

19.给导航栏设置阴影,iOS 10以下的系统死活设置不上

  <1> 解决bug, 最常用的就是注释代码,把复杂的逻辑改成最简单的逻辑,看看效果是否可以.结果设置成最简单的颜色后,还是不显示阴影....

  <2> 因为阴影也是一个视图,不可能无缘无故的不显示,问题就有可能出在阴影被隐藏了的问题上了.....

  <3> 结果还真是,在自定义的导航栏中的 viewdidload 方法中,执行了遍历 navbar 子视图并隐藏导航栏 imageview 的语句,导致我在 initialize 方法中设置的导航栏阴影都不生效.

20.给底部导航栏设置阴影,却总是不透明

  主要还是由于 tableview 的高度设置小了,感觉像是 tabbar 多出来一部分,把文字给严实(不透明)地遮住了.

原文地址:https://www.cnblogs.com/lz465350/p/6486144.html