封装的注意事项

封装、继承、多态是面向对象的三大特性。这也是我们平时在开发中减少冗余代码的工具(我当年年少无知,总想着用Storyboard托先来减少冗余代码)。

封装不仅能减少你的单个文件的代码行数,还可以让你的代码更加清晰明了,容易让其他程序员读懂。不过层次结构也是有规定的,一般不超过三层。

当我们想封装给一个库给别人用的时候,就要考虑很多问题。

首先你要看的是你想实现什么功能,比如我这次是要封装一个按钮,实现弹簧功能。再加上button的title相对于Image的方向(默认image在左title在右)。


知道功能了,接下来是留给用户的参数。看功能有两个:1动画效果,2title方向  看来至少需要两个参数了。一个是是否再起动画,一个是title方向。那么问题来了,title方向,这个一般是用数字表示。但是谁知道你的数字代表的是哪个方向啊。所以我们这里采用宏定义,让其他小伙伴一看就知道是什么方向

typedef enum{    //title的方向

TitleDirection_right,

TitleDirection_Top,

TitleDirection_bottom,

TitleDirection_left

}TitleDirections;

以及接下来一个功能是动画,动画不只是动画的开关,还有一个就是动画的时间。以及动画开关的属性,一听开关,我们自然想到BOOL类型,在声明BOOL类型的时候又有一个小细节,就是重写getter方法,这样才能在调用的时候非常容易的看到是说明状态,下面是三个属性

其他就是一些放方便用户使用的方法,以及初始化方法,这些方法虽然,你不给出用你库的人也可以自己在外面设置,但是这样大大的降低了使用库的人的体验。

特别注意在封装库的时候千万不要重写init方法,正确的方法是直接重写initwithframe方法,因为在init方法里面实质是会调用initwithframe方法的。而如果你只是重写init方法,用你库的人不知道,他可能会调用initwithframe方法来初始化,这个时候你重写的init方法不会被调用,所以你也白写了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,482评论 25 709
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 12,727评论 6 30
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 10,550评论 5 13
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,733评论 4 61
  • 现在,我在去乌镇的路上。 是的,我又来杭州了。为什么是用“又”呢?当然,这是第二次来杭州。 还记得两年前来杭州,是...
    丝瓜君的问候阅读 2,350评论 0 1

友情链接更多精彩内容