美文网首页
问题记录

问题记录

作者: 十月末的故事 | 来源:发表于2018-10-25 12:10 被阅读5次

    . MKMapView 疑似无法释放

    环境:XCode9.2, iOS10.3.3, iPhone5
    >问题描述:从控制器 A present 到控制器 B,B 中添加了一个 MKMapView,之后从 B dismiss 回 A,结果是控制器 A 整个界面无法进行任何操作,像是整个屏幕被蒙上一层透明的遮罩。
    进行检查后,发现屏幕并无透明遮罩。
    通过 Storyboard 和代码两种方式去初始化 MKMapView,都是相同的结果。
    
    > 解决:
    这可能是 MKMapView 的析构函数的问题,不管你的地图视图对象如何配置,在Xcode8和iOS10系统下都有几率出现冻结你的应用程序,主线程挂起。在dealloc方法中添加如下代码,可解决
    
    - (void)dealloc
    {
    #if DEBUG
        // Xcode8/iOS10 MKMapView bug workaround
        static NSMutableArray* unusedObjects;
        if (!unusedObjects)
            unusedObjects = [NSMutableArray new];
        [unusedObjects addObject:mapView];
    #endif
    }
    

    . UITableView 顶部偏移问题

    环境:XCode9.2, iOS10.3.3, iPhone5
    >问题描述:在控制器 A 中添加了2个 UITableView,tableA 和 tableB。 tableA 的顶部向下偏移了20个像素,tableB 显示正常。设置以下代码没有作用
        self.edgesForExtendedLayout = UIRectEdgeNone;
        self.automaticallyAdjustsScrollViewInsets = NO;
    
    > 解决:
    当你的控制器上面添加了一个控件的时候, 再添加 tableView 时(也就是说 tableView 不是控制器上的第一个视图时), tableView就会做出判断, 不会向下偏移。添加以下代码可解决
    
    - (void)viewWillLayoutSubviews
    {
        [super viewWillLayoutSubviews];
    
        tableA.contentInset = UIEdgeInsetsZero;
        tableA.scrollIndicatorInsets = UIEdgeInsetsZero;
    }
    
    

    . NSTimer 刷新 UIButton 文字时闪烁

    环境:XCode9.2, iOS10.3.3, iPhone5
    问题描述:自定义了一个获取验证码时用的倒计时按钮,在每次刷新文字时都会闪烁
    
    > 解决:
    将 UIButton 的 type 从 system 改为 custom 即可。
    

    . pod update warning Insecure world writable mode 040777

    在利用命令行操作CocoaPods时,可能会遇到这样的 warning: Insecure world writable dir xxxxx in PATH, mode 040777,但是却又不妨碍使用。
    
    提示含义: 目录被赋予777的权限,不安全。
    如何解决:将提示权限改为775,问题即可解决。
    
    具体实现:
    在终端写入下列命令行,即可消除上面的提示。xxxxx 是 warning 中提示的文件路径
    sudo chmod go-w xxxxx
    sudo chmod 775 xxxxx
    

    . You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory

    使用命令 sudo gem install cocoapods 安装 cocoapods,仍然提示没有权限,
    可以使用 sudo gem install -n /usr/local/bin cocoapods
    

    . -ObjC 引起的 duplicate symbols

    问题描述:在项目中用到了 A,B 两个公司的 framework,A公司的 framework 需要设置 -ObjC 才可以正常使用,但加了 -ObjC 后 B 公司的 framework 就会报 duplicate symbols 错误。
    
    原因分析:
    Other linker flags 对应 ld 命令执行时后面所加的参数
    -ObjC:链接器会把静态库中所有的 .o 文件都加载到可执行文件中(如果库中和加载库的程序有重复的文件,便会出现如上错误)
    -all_load:链接器会把所有找到的目标文件都加载到可执行文件中
    -force_load:把指定要加载路径的库文件全部加载,不影响其余库文件。
    
    解决方法:
    删除 -ObjC
    使用 -force_load 加载 A 公司的 framework
    

    相关文章

      网友评论

          本文标题:问题记录

          本文链接:https://www.haomeiwen.com/subject/cauilftx.html