美文网首页
ios 小知识点(五)

ios 小知识点(五)

作者: 派大星的博客 | 来源:发表于2018-05-22 12:09 被阅读11次

    1、App内屏幕录制的实现

    • AVAssetWriterInputPixelBufferAdaptor应该只适用于将YUV或RGB等图像通过AVAssetWriter写入。
    • 你可以尝试将H.264数据构造成CMSampleBufferRef,然后通过videoWriterInput的appendSampleBuffer方法写入。
    • 如果上述方法不可行,至少用FFmpeg(x264)是可以实现的。
    图形编程框架
    FFmpeg  :  多平台 视频
    OpenCV : 处理图片的  
    OpenGL ES :3D图形渲染
    

    2、cocoapods 升级

    a 、sudo gem install cocoapods

    或者遇到权限问题的时候:

    b、sudo gem install -n /usr/local/bin cocoapods

    3、Swift目前也有一些可以实现Mock 的框架,

    如 Dobby、MockFive 、SwiftMock 等。

    推荐 : XCTest + OCMock + OCHamcrest

    4、为了更方便地进行单元测试,业务代码应避免以下情况:

    • 存在太多条件逻辑
    • 构造函数中做的事情太多
    • 存在太多全局状态
    • 混杂了太多无关的逻辑
    • 存在太多静态方法
    • 存在过多外部依赖
    • 想要写好单元测试,学会重构是很重要的,重构的过程类似于清理厨房,虽然和做饭没太大关系,但可以让您下次做饭更方便,心情更好。可以重构的地方包括,在待测试类与其依赖之间增加一层Test Fixture;将创建逻辑与业务逻辑分开等等。

    5、重构可以采取以下策略:

    • 编写测试代码建立基本的防护网。在单元测试和功能测试之间要有取舍,如果单元测试实施成本很高,可以先加功能测试。
    • 通过增加中间层来打破依赖,不是为了去掉依赖,而是为了后续的修改以及测试的便利。
    • 将第一步中编写的功能测试换成单元测试。

    6、MVVM模式下ViewModel是做什么用的?

    Model:很简单,就是业务逻辑相关的数据对象,通常从数据库映射而来,我们可以说是与数据库对应的model。

    View:也很简单,就是展现出来的用户界面。
    基本上,绝大多数软件所做的工作无非就是从数据存储中读出数据,展现到用户界面上,然后从用户界面接收输入,写入到数据存储里面去。所以,对于数据存储(model)和界面(view)这两层,大家基本没什么异议。但是,如何把model展现到view上,以及如何把数据从view写入到model里,不同的人有不同的意见。
    MVC派的看法是,界面上的每个变化都是一个事件,我只需要针对每个事件写一堆代码,来把用户的输入转换成model里的对象就行了,这堆代码可以叫controller。
    而MVVM派的看法是,我给view里面的各种控件也定义一个对应的数据对象,这样,只要修改这个数据对象,view里面显示的内容就自动跟着刷新,而在view 里做了任何操作,这个数据对象也跟着自动更新,这样多美。所以:

    ViewModel:就是与界面(view)对应的Model。因为,数据库结构往往是不能直接跟界面控件一一对应上的,所以,需要再定义一个数据对象专门对应view上的控件。而ViewModel的职责就是把model对象封装成可以显示和接受输入的界面数据对象。
    至于viewmodel的数据随着view自动刷新,并且同步到model里去,这部分代码可以写成公用的框架,不用程序员自己操心了。

    7、 FIRST 原则:单元测试的最佳实践

    FIRST 是几个单词的缩写,简要描述了有效的单元测试需要什么条件,这些条件包括:

    • Fast:测试的运行速度要快,这样人们就不介意你运行它们了。
    • Independent/Isolated:一个测试不应当依赖于另一个测试。
    • Repeatable:同一个测试,每次都应当获得相同的结果。外部数据提供者和并发问题会导致间歇性的出错。
    • Self-validating:测试应当是完全自动化的,输出结果要么是 pass 要么是 fail,而不是依靠程序员对日志文件的解释。
    • Timely:理想情况下,测试的编写,应当在编写要测试的产品代码之前。
      遵循 FIRST 原则会让你的测试清晰和有用,而不会成为 App 的渊薮。

    8、oc方法调用 会调用两个隐式参数

    • self
    • _cmd

    相关文章

      网友评论

          本文标题:ios 小知识点(五)

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