小概念

作者: 小小鱼类 | 来源:发表于2018-06-14 10:33 被阅读2次

    什么是GDB和LLDB?

    我们在开发iOS程序的时候常常会用到调试跟踪,如何正确的使用调试器来debug十分重要。xcode里有内置的Debugger,老版使用的是GDB,xcode自4.3之后默认使用的就是LLDB了。
    GDB:
    UNIX及UNIX-like下的调试工具。
    LLDB:
    LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。

    什么是延迟加载?

    懒汉模式,只在用到的时候才去初始化。
    也可以理解成延时加载。
    我觉得最好也最简单的一个列子就是tableView中图片的加载显示了。
    一个延时载,避免内存过高,一个异步加载,避免线程堵塞

    内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

    谁申请,谁释放
    遵循Cocoa Touch的使用原则;
    内存管理主要要避免“过早释放”和“内存泄漏”,对于“过早释放”需要注意@property设置特性时,一定要用对特性关键字,对于“内存泄漏”,一定要申请了要负责释放,要细心。
    关键字alloc 或new 生成的对象需要手动释放;
    设置正确的property属性,对于retain需要在合适的地方释放,

    weak 和 unowned

    unowned 有点像oc里面的unsafe_unretained,而weak就是以前的weak。对于这两者的使用,不能说用哪一个要好一点,要视情况而定。用unowned的话,即使它原来的引用的内容被释放了,它仍然会保持对被已经释放了的对象的一个引用,它不能是Optional也不能是nil值,这个时候就会出现一个问题,如果你调用这个引用方法或者访问成员属性的话,就会出现崩溃(野指针)。而weak要稍微友善一点,在引用的内容被释放之后,会自动将weak的成员标记为nil。有人要说,既然这样,那我全部使用weak。但是在可能的情况下,我们还是应该倾向于尽量减少出现Optional 的可能性,这样有助于代码的简化。Apple给我们的建议是如果能够确定访问时不会被释放的话,尽量用unowned,如果存在被释放的可能性的话,就用weak

    objc中的类方法和实例方法有什么本质区别和联系
    • 类方法:

      类方法是属于类对象的
      类方法只能通过类对象调用
      类方法中的self是类对象
      类方法可以调用其他的类方法
      类方法中不能访问成员变量
      类方法中不能直接调用对象方法

    • 实例方法:

      实例方法是属于实例对象的
      实例方法只能通过实例对象调用
      实例方法中的self是实例对象
      实例方法中可以访问成员变量
      实例方法中直接调用实例方法
      实例方法中也可以调用类方法(通过类名)

    相关文章

      网友评论

          本文标题:小概念

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