7、iOS 常见问题

作者: MartinCQ | 来源:发表于2017-06-07 10:31 被阅读154次

    [图片上传中。。。(1)]######1、switch语句case中新建变量报语法错误?

    将case x: 中的代码块使用 { } 括起来就行。

    2、真机调试的时候报错
    • 缺少对应系统版本的镜像文件
    • 拒绝连接,手机没有信任电脑
    3、引入百度地图的时候报语法错误

    修改文件后缀名为.mm

    4、 EXC_BAD_ACCESS 这个错误

    其主要原因是因为程序访问了错误的内存地址,根据其后面的判断,是空地址还是一个已经释放的对象地址,具体情况具体分析

    SIGSEGV 访问了没有开辟的内存或是已经释放的内存
    SIGPIPE对一个一端已经关闭的socket调用两次write,第二次默认结束进程
    SIGABRT程序终止,断言或操作系统内部抛出
    
    4、 product archive 无效,不可选

    不要选择模拟器,选择Generic iOS Device 或 真机

    5、项目选择不了模拟器

    目标编译版本太高 在�PROJEC -> General -> DeploymentTarget中修改

    6、执行PresentViewController比正常感觉慢

    因为当前线程可以休眠了,所以执行下面语句唤醒主线程
    [self performSelectorOnMainThread:@selector(dontSleep) withObject:nil waitUntilDone:NO];//空操作,为了唤醒主线程

    7、添加布局约束后不能准确获取view的frame

    在布局所在的superview调用layoutIfNeeded,然后获取约束view的frame

    8、tabview和scrollview的滑动手势冲突
    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
        if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
            CGPoint translation = [(UIPanGestureRecognizer *)gestureRecognizer translationInView:self];
            BOOL res = fabs(translation.x) > fabs(translation.y);
            return res;//判断当下的一瞬间是上下滑动还是左右滑动
        }
        return YES;
    }
    
    9、两个视图相应同一个手势

    默认情况下,两个gesture recognizers不会同时识别它们的手势,但是你可以实现UIGestureRecognizerDelegate协议中的gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:方法对其进行控制。这个方法在这两个gesture recognizers中的任意一个将block另一个的触摸事件时调用,如果返回YES,则两个gesture recognizers可同时识别,如果返回NO,则并不保证两个gesture recognizers必不能同时识别,因为另外一个gesture recognizer的此方法可能返回YES。也就是说两个gesture recognizers的delegate方法只要任意一个返回YES,则这两个就可以同时识别;只有两个都返回NO的时候,才是互斥的。默认情况下是返回NO。

    10、iOS上下黑边

    项目中还留着Launch Screen ,删掉Launch Screen.xib


    image.png

    将这个换成Launch Images Source 选择Use Asset Catalog

    11、有些程序编译完成后不运行 The file “XMPPDemoA” couldn’t be opened because you don’t have permission to view it.

    cmd + shift + k,清除一下缓存就好了

    12、让一个view的部分区域相应点击事件

    重写 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event

    13、让一个手势同时响应上层View事件,也同时响应下层view事件

    tap.cancelsTouchesInView = NO;

    14、ButtonTitle水平对齐

    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

    15、Button点击事件不响应
    • 可能一:没有打开userInteractionEnabled
    • 可能二: 绑定点击事件的对象已经被释放掉了
    16、发送一次通知响应两次
    • 因为监听对象注册了两次,而没有移除,所以同一个地方会相应两次
    17、ScrollView设置了contentoffset之后经过显示和消失步骤后,contentoffset又变成了0,0

    是因为contentSize始终为0,当所以在重新显示的时候又变成了0,

    18、ScrollView的contentoffset莫名变成 0 ,-20

    将Controller的 automaticallyAdjustsScrollViewInsets = false

    19、给View设置阴影不出现
    1. 不能设置 layer.masksToBounds = YES 可以设置 clipsToBounds = YES
    1. 要设置 border
    20、The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 1.)

    edit scheme里面有个空的环境变量

    21、preferredStatusbarStyle 无效

    除了已经理解的要始终保持是当前ViewController之外还有infoplist里面的View controller-based status bar appearance 是yes,百度导航可能要求是no
    这个时候用[[UIApplication sharedApplication]setStatusBarStyle:UIStatusBarStyleLightContent]
    有效

    22、Xcode8 + IOS 10 打印不全

    ifndef OPTIMIZE //针对ios 10 + Xcode 8打印不全

    define pNSLog(...) printf("\n%s[Line %d] %s\n",PRETTY_FUNCTION, LINE,[[NSString stringWithFormat:VA_ARGS]UTF8String]);

    endif

    
    ######23、push新界面的时候卡住,需要点home键在回来就显示
    > 因为设置了手势的返回
    
    ######24、数组遍历 For in   和  for (int i;i  < count; i++)的区别
    > 一般情况下是没有什么问题的,但是如果for in  结束判断是判断遍历到的某一个元素是否是等于最后一位则有问题
    如果数组中有两个相同的元素,而其中一个刚好是最后一位则会出现问题,遍历会在遍历到第一个相同的元素的位置时跳出遍历(这是个坑)
    
    ######25、uilabel设置了numberOfLines = 0 还是不换行
    > 设置adjustFontSizeWithWidth = YES
    
    ######26、duplicate symbols for architecture
    > 有可能是重复导入头文件导致的
    
    ######27、[_titleBtns makeObjectsPerformSelector:@selector(setSelected:) withObject:@(NO)];无效
    > 这个只在模拟器中有用,让数组中的所有对象都执行指定方法

    相关文章

      网友评论

        本文标题:7、iOS 常见问题

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