• IOS知识点收集


    17  duplicate symbols for architecture armv7s

        用cocoapods 的时候出现,这种错误一般是由重复引用库文件引起。

    原因:自己尝试添加Reachability的时候,用import ""导入, 发现没又Reachability.h文件,就到link binary with libs里添加了Reachability静态库。

    使用cocoapod 文件都是以import <> 方式导入,删掉project里添加的,无需添加,直接引用即可。

     

    16  cocoapods error: incompatible character encodings: UTF-8 and ASCII-8BIT. Updating CocoaPods might fix the issue.

      文本文件中的单引号自动变成了中文的单引号,理所当然编码会出现问题。

    15 删除添加的代码片段

    xcode 中添加了代码片段,要删除的步骤。

    1.选中代码片段。 2. 点击键盘delete 键。

    14.mutating method sent to immutable object'

     

    从字面上理解:可变的消息发给了不可变的对象。比如NSDictionary类型的对象调用setValue方法.应该把NSDictionary 改成NSMutableDictionary类型

     

    13。'NSInvalidArgumentException', reason: '+[GMSCameraPosition cameraWithLatitude:longitude:zoom:]: unrecognized selector sent to class

       在build setting 的Other Linker Flags中设置为-ObjC

     

    12.The operation couldn’t be completed. (com.google.HTTPStatus error 400.)

    在谷歌map api 没设置好。步骤:在developer console中心,

    1:将 Google Maps SDK for iOS 的功能打开,

    2.申请与你ios项目对应boundle ID 的App Key。

    一般app key在申请过程有几个小时才能生效。确定生效后才能调用地图。

    11.udp 锁屏 导致出新中断信号

    今天终于确定了,原来ios在锁屏之后,重新解锁,这个过程会导致socket失效。 之前 的表现就是锁屏,解锁之后,程序直接crash。(其实是解锁之后,发送第一个包,在sendto之后会导致crash)。 

    目前的解决办法是,重新创建了一个socket,close了之前的。

     这好像是因为ios的锁屏和按home键,最终的状态时不一样的, home键会导致程序进入后台,也就是background状态。

     

    10. self.mapview = [BMKMapView alloc]init]; 报exc_bad_access 错误。

    通常这个是因为内存释放导致,但是在百度ios7上出现这个错误。原因是mapapi.bundle 不存在,或者不是最新版本,尝试把mapapi.bundle拖到百度地图sdk中。运行。

     

    9. iOS7 xcode5 百度地图Api出现-[__NSCFString stringFromMD5]: unrecognized selector sent to

    other linker  flags 添加 -all_load参数。
     Project ->build settings ->linking->Other Linker flags

     

     

    8.ios 7兼容

    http://diwu.me/2013/09/23/ios7jie-mian-guo-du/

    7. UITapGestureRecognizer手势和tableview 触摸选择事件不兼容解决办法。

    原因:

      若view 中加了UITapGestureRecognizer手势和tableview ,UITapGestureRecognizer手势调用后,就不会继续往下传递(被拦截),这导致了tableview的点击事件失效。

    解决:

      1.手势设置委托方法。

        UITapGestureRecognizer *tap =[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(btnClicked:)];

        tap.delegate =self;

        tap.numberOfTapsRequired =1;

        [self.viewaddGestureRecognizer:tap];

    2.在回调方法中进行判断,若触摸的是tableviewcell的contentview,着不响应。使得事件往下传递。

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

    {

        // 输出点击的view的类名

        NSLog(@"%@", NSStringFromClass([touch.viewclass]));

        

        // 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件

        if ([NSStringFromClass([touch.viewclass]) isEqualToString:@"UITableViewCellContentView"]) {

            return NO;

        }

        return  YES;

    }

     

    6"ld: library not found for -l...." 问题的解决

    现象:

      在编译工程时,有时会遇到类似“ld: library not found for -l....”的错误提示。

    原因:

      通常这是由于工程在编译时找不到需要的链接库而导致的。

    解决方法:

      一般可以通过如下方法解决,在工程的Target中选中要执行编译的某个target,然后“get info”,打开Build设置页面,在“Library Search Path”中添加缺失链接库的所在文件夹的路径即可。

    5.去掉xcode编译warning:ld: warning: directory not found for option '-L

    1. 选择工程, 编译的 (targets)
    2. 选择 Build Settings 菜单
    3. 查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK

    4.字典转换错误:

    -[NSDecimalNumber isEqualToString:]:

    用sbjson解析字典时候出现如上错误。原因是字典中的值不是字符串“1”,而是1的数字表示。

    要直接得到字符串的形式,在解析后给字典加上描述,如:

    [[jsonObjects valueForKey:@"id"] description];

    3.图片自适应宽高。

        imageView1.contentMode = UIViewContentModeScaleAspectFit;  
        [self.view addSubview:imageView1];  

    2.控件旋转

    宏定义 旋转角度 :

    #define degreesToRadians(x) (M_PI*(x)/180.0)

    CGAffineTransform rotation = CGAffineTransformMakeRotation(degreesToRadians(180));//旋转180度
    [xxx setTransform:rotation];

    顺便记录一些常量,以后用的着!

    #define M_E         2.71828182845904523536028747135266250   e
    #define M_LOG2E     1.44269504088896340735992468100189214   log 2e
    #define M_LOG10E    0.434294481903251827651128918916605082  log 10e
    #define M_LN2       0.693147180559945309417232121458176568  log e2
    #define M_LN10      2.30258509299404568401799145468436421   log e10
    #define M_PI        3.14159265358979323846264338327950288   pi
    #define M_PI_2      1.57079632679489661923132169163975144   pi/2
    #define M_PI_4      0.785398163397448309615660845819875721  pi/4
    #define M_1_PI      0.318309886183790671537767526745028724  1/pi
    #define M_2_PI      0.636619772367581343075535053490057448  2/pi
    #define M_2_SQRTPI  1.12837916709551257389615890312154517   2/sqrt(pi)
    #define M_SQRT2     1.41421356237309504880168872420969808   sqrt(2)
    #define M_SQRT1_2   0.707106781186547524400844362104849039  1/sqrt(2)

    1.ios 沙盒文件

    描述:在对文件进行写入时候出现失败的情况。排查错误,.路径相同,仍然失败,查找到此原因。

    沙盒里面的,文件保存的位置分为四个:

    1,工程沙盒里(就是程序user Document文件夹下,以读取文件,写入文件方式)

    2,工程自身里(就是在工程里手动创建一个如.plist文件,把固定的内容写入,这个需要人工手动写入,即xxx.app文件)

    3,工程沙盒里(保存到user Document下,不过不需要读写文件,用系统的 NSUserDefaults 可以快速保存添加读取删除基本数据类型,类似于android里的Sharedpreferences )

    4.tmp文件

    要想真正的在app中对程序进行读写,只能把文件放在document,tmp里面。

  • 相关阅读:
    ajax请求
    easyui相关问题
    linux解压命令
    angular2 中文学习资料整理
    在angular2服务中注入服务
    Angular 2模板语法
    登录,注册流程(基于token的身份验证)
    Node Js与JavaScript的区别及nodejs优缺点。
    yarn包管理网站
    浅谈Cookie,Session,WebStorage区别,应用场景
  • 原文地址:https://www.cnblogs.com/try2do-neo/p/3335403.html
Copyright © 2020-2023  润新知