zoukankan      html  css  js  c++  java
  • 组件接口(API)设计指南[4]-通知(Notifications)

    *返回文件夹阅读其它章节: http://blog.csdn.net/cuibo1123/article/details/39894477


    通知(Notifications)

        通知是托付协议的还有一半。我的立场是。假设你使用托付协议(你因该在全部适合的地方使用),就加入一个相同功能的通知。以使它提供完整的托付/通知方案。

        在MGTileMenu中,你能够找到关于通知的接口文件:MGTileMenuController



    规则23: 通知尾随托付方法

        在托付方法(适当的。不是数据源方法)和通知之间存在着天生的对应关系。你能够在你代码的不论什么地方使用他们。而达到全然相同的目的。

        假设你有一个关于事件发生的托付。你通常也应该提供一个相同目的的通知。做到即使把托付方法全部移除,使用者也依旧能够通过通知来实现对应功能。

        托付方法的參数应该与通知的‘userInfo(通知附加值)’内容匹配。通知与您在托付中直接传递參数有一个明显的差别,它通常须要将信息装载到字典(NSDictionary)中。

        托付方法:

    - (void)tileMenuWillDisplay:(MGTileMenuController *)tileMenu;
    - (void)tileMenuDidDisplay:(MGTileMenuController *)tileMenu;

        对应的通知:

    externNSString *MGTileMenuWillDisplayNotification;
    externNSString *MGTileMenuDidDisplayNotification;


    规则24: 不要吝啬‘userInfo(通知附加值)’ 

        给通知对象所须要的足够信息。

    请记住,通知接收器可能(差点儿总是会)不持有托付或数据源组件的引用。

        问问自己什么是实用的,并提供对应信息。

    最起码,你必须确保提供给对应托付方法的參数都包括在了userInfo的对象中。

        托付方法:

    - (void)tileMenu:(MGTileMenuController *)tileMenuwillSwitchToPage:(NSInteger)pageNumber;
    - (void)tileMenu:(MGTileMenuController *)tileMenudidSwitchToPage:(NSInteger)pageNumber;

        对应的通知:

    // 通知userInfo包括一个键"MGPageNumber"
    #defineMGPageNumberKey @"MGPageNumber"
    externNSString *MGTileMenuWillSwitchToPageNotification;
    externNSString *MGTileMenuDidSwitchToPageNotification;



    规则25: 測试的地狱

        最后,全部事情大家都已经知道了。

    软件project专业化第101条:确保它确实能够工作。

        是否使用正式的TDD(測试驱动开发)取决于你。但測试本身是不可能做到全面的。每个托付方法、每个通知、每个定制点所共同组成的千千万万种组合可能出现各种问题。

        出现缺陷,首先应该找到并修复他们。假设你在赶时间,能够裁切功能。你一定会对无bug上线的问题感到苦恼。


    阅读下一章节: http://blog.csdn.net/cuibo1123/article/details/39894477

    -------------------------

    英文原名《API Design
           作者Matt Gemmell
           原名链接http://mattgemmell.com/api-design/

    中文版由xoneday翻译
           欢迎訪问译者博客:http://blog.xoneday.com
           新浪微博:@xoneday某天

    假设这片译文给您带来了帮助,希望您能通过下载我的APP来支持我:
    豆瓣读书:https://itunes.apple.com/cn/app/id695492935
    便签夹:https://itunes.apple.com/cn/app/id580552733

               

                 便签夹                                        豆瓣读书


    *转载声明:请勿删减作者/译者信息与支持部分的内容。如不接受此条款请勿转载。


  • 相关阅读:
    747. Largest Number Greater Than Twice of Others 最大数量大于其他两倍
    Python代码规范和命名规范
    Pycharm2018中DataBase的使用
    Pycharm新建文件css文件无后缀,html中无法正确引入
    Pycharm DataBase Navigator Plugins 使用
    Python怎么去写单元测试用例去测试hello world呢
    最近的电视剧推荐
    RobotFrameWork基本语法练习
    RobotFrameWork中使用自定义关键字
    Windows下同时安装了Python2与Python3时如何使用RobotFrameWork
  • 原文地址:https://www.cnblogs.com/yxwkf/p/5158481.html
Copyright © 2011-2022 走看看