Objective-C中的类目(Category),延展(Extension),协议(Protocol)这些名词看起来挺牛的,瞬间感觉OC好高大上.在其他OOP语言中就没见过这些名词,刚看到这三个名词的时候,有种感觉这是不是学习的坎?这东西难不难?能不能学会?经过本人亲自验证,这三个东西理解起来还是蛮简单的,学过C++或者Java的小伙伴对比理解还是蛮轻松的.类目(Category)就是给已有的类扩充相应的方法,扩充的方法是公有的,类目还可以起到分模块的功能,下面会详细说到. 延展(Extens…
只有继承和协议需要引IMPORT "头文件"; 必须接受marryprotocol协议, id<marryprotocol>基于类型的限定, 才能给实例变量赋值 @property (nonatomic, assign) id<marryprotocol> husband; 避免Optitonal没有实现的功能 if ([_husband respondsToSelector:@selector(driver)]) { [_husband driver]; }…
协议 协议只有方法的声明(类似于其他编程语言的接口)   协议相当于大家都所遵循的 关键字 @protocol 协议名 <所遵循的协议> 默认NSObject   @end     @protocollamcoProtocol <NSObject>@required //必须实现的方法 -(void)study; @optional //可实现可不实现的方法 -(void)work; @end   student.h文件 #import<Foundation/Foundati…
类目和延展的作用都是为了扩展一个类. Objective-C中的类目(Category) 一.类目的定义和作用 类目也叫分类,英文Category,在没有原类.m文件的基础上,给该类添加方法. 比如,NSString类原本没有helloString方法,我们又没有NSString类的原代码,那我们想给NSString类添加一个helloString的方法,只有通过声明子类或者类目才可以达到这个目的. 二.类目的声明: @interfaceNSString (hello) - (void)hell…
类目的基本概念: 如果有封装好的一个类,随着程序功能的增加,需要在类中增加一个方法,那我们就不必在那个类中做修改或者再定义一个子类,只需要在用到那个方法时添加一个该类的类目即可. 1.在类目定义的方法中,会成为原始类的一部分,与其他方法的调用没有区别 2.通过给父类定义类目方法,其子类也会继承这些方法.如果子类添加类目方法,父类则不会拥有子类的类目方法. 类目方法的应用: 对现有类的扩展:在类目中增加的方法会被子类所继承,而且运行时跟其他的方法没有区别 作为子类的替代手段:不需要定义和使用一个子…
类目:为已知的类增加新的方法:注意:类目里面只能写方法,不能写声明和属性,所以,类目不能作为接口来用 1.类目无法向已有类中添加实例变量.2.如果类目中的方法和已有类中的方法名称冲突时,类目中的方法优先级高,如果方法名冲突,已有类中的原始方法便无法使用.3.在使用类目的时候,最好是将自己扩展的方法和原始方法区分开来. 1.类目方法的应用: 1)对现有类进行扩展:如:可以扩展Cocoatouch框架中的类,在类目中增加的方法会被子类继承,而且在运行时跟其他的方法没有区别. 2)作为子类的替代手段:…
Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战 说明:Java生鲜电商平台-生鲜电商中商品类目.属性.品牌.单位架构设计与实战经验分享 凡是涉及到购物,必然是建立在商品的基础之上. 作为交易的基础,商品管理可以说是电商系统最中重要的部分,它是连接前端用户,平台商户,后台系统的桥梁,商品管理系统与采购系统PMS.订单管理系统OMS.仓储管理系统WMS.促销活动系统.物流配送系统TMS等有着紧密的联系. 商品管理体系的延展性,对于平台的运营维护有直接的影响,它在一定程度上决…
Category : 也叫分类,类目. *是 为没有源代码的类 扩充功能 *扩充的功能会成为原有类的一部分,可以通过原有类或者原有类的对象直接调用,并且可继承 *该方法只能扩充方法,不能扩充实例变量 *添加的类目是一对 .h .m 文件,文件名为 原有类名 + 分类名 Extension :延展 *为能够获得源代码的类添加私有的实例变量和方法 *注意:延展操作的类是能够获得源代码的类(具有 .m 文件的类) *通过延展定义的方法属于私有方法,外界是没有访问权限的,只能在当前类的 .m 文件中访问…
1.类目 类目就是为已存在的类添加新的方法.但是不能添加实例变量.比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现. @interface NSMutableArray (Sort) //为NSMutableArray类添加Sort方法,Sort就是类目名,做到见名知意-(void)invert;//方法@end 实现部分 #import "NSMutableArray+Sort.h"@implementation NSMutableArray (Sort)…
1.类目 类目就是为已存在的类添加新的方法.但是不能添加实例变量.比如系统的类,我们看不到他的.m文件,所以没有办法用直接添加方法的方式去实现. @interface NSMutableArray (Sort) //为NSMutableArray类添加Sort方法,Sort就是类目名,做到见名知意-(void)invert;//方法@end 实现部分 #import "NSMutableArray+Sort.h"@implementation NSMutableArray (Sort)…
person+money.h  这是类目类 #import "Person.h" //这是扩展person类的接口类,独立一个文件 @interface Person (Money) -(void) haveMoney; @end person+money.m 这是类目类 #import "Person+Money.h" //这是扩展person类的实现类,独立一个文件 @implementation Person (Money) -(void) haveMoney…
类目是Object-C中最有用的一个特性.实质上,类目允许你为一个已存在的类添加一些方法而不用子类化该类,也不需要你了解该类的实现细节. 这是特别有用的,因为你可以给一个内建的对象添加方法.当你想在你的应用程序里面给所有NSString类型的实例添加一个方法,你只需要添加一个类目,而不需要通过定义一个子类来添加该方法. 比如,我想给NSString添加一个方法以判断它是不是一个URL,写法就像这样: #import<Cocoa/Cocoa.h> @interface NSString (Uti…
说明: 方法,属性或变量:   类别只能添加方法,不能添加属性(理论上,但可以通过runtime的关联添加). 扩展可以添加方法和实例变量或属性,实例变量默认@private类型.扩展是类别的一个特例,是类别的一个“匿名分类”. 方法只声明没有实现,报警: 类别编译器不会报警:类别在运行时添加到类中. 扩展编译器会报警:扩展在编译阶段添加到类中. 背景: 在大型项目,企业级开发中多人同时维护同一个类,这样势必会导致当前类随着项目开展,变得臃肿,iOS中的分类(Category)就很好的解决了这个…
(一)Category .什么是Category? category是Objective-C .0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已经存在的类添加方法.除此之外,apple还推荐了category的另外两个使用场景. 可以把类的实现分开在几个不同的文件里面.这样做有几个显而易见的好处. 可以减少单个文件的体积 可以把不同的功能组织到不同的category里 可以由多个开发者共同完成一个类 可以按需加载想要的category 声明…
(一)Category 1.什么是Category? category是Objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指的category.category的主要作用是为已经存在的类添加方法.除此之外,apple还推荐了category的另外两个使用场景. 可以把类的实现分开在几个不同的文件里面.这样做有几个显而易见的好处. 可以减少单个文件的体积 可以把不同的功能组织到不同的category里 可以由多个开发者共同完成一个类 可以按需加载想要的category…
自己做笔录 用来后来回顾.. (一) Category 1.什么是category category是objective-C 2.0之后添加的语言特性,别人口中的分类.类别其实都是指category.category的主要作用是为已经存在的类添加方法,除此之外,Apple还推荐了category的另外两个使用场景. 可以把类的实现分开在几个不同的文件里面.这样做有几个显而易见的好处. ·可以减少单个文件的体积 ·可以把不同的功能组织到不同的category里 ·可以由多个开发者共同完成一个类 ·…
1.类目为系统内部的类或者是没有源代码的类添加方法,不有添加实例变量 2.添加的方法会成为原类的一部分,子类照样可以使用 3.类目的文件名为原类名+文件名 4.既可以添加实例方法,也可以添加类方法 Xcode工程下: 1 command + N 新建 2 选择 Objectiove-C File 3 File:  设置新建的类的名字: File  Type:Category(选择) Class:(选择具体要创建的类名) //关于日期的一些设置: //NSDate 这个类 是Foundation框…
 OC04字符串博客:1.http://www.cnblogs.com/heyonggang/p/3452556.html (字符串常用方法)2.http://blog.sina.com.cn/s/blog_8345c9c90100verq.html       (字符串截取某一部分)OC05/06集合:1.(数组和数组排序):http://blog.csdn.net/daiyelang/article/details/18726947 2.(字典):http://blog.sina.com.c…
今天在研究swift的时候看到了分类和扩展.这是两个十分重要有用的功能,但是之前用的不多,没有深入了解过,在今天就从头理一遍. 一.分类(Category): 概念: 分类(Category)是OC中的特有语法,它是表示一个指向分类的结构体的指针.原则上它只能增加方法,不能增加成员(实例)变量.具体原因看源码组成: Category源码: Category Category 是表示一个指向分类的结构体的指针,其定义如下: typedefstructobjc_category *Category;…
-----------------------------------------------Category-------------------------------------- 类目 是在原有类的基础上 添加方法,在使用的时候只需要用原有类实例化出来的对象,调用即可.在类目里面 不可以添加变量.属性,只能添加方法. 1.实际开发在什么情况下使用呢? 答:扩展已经封装好的类(不希望再改变原有类)这种情况下只能用 类目 在团队里面 分工开发一个模块的时候 使用Category 2.不要覆盖…
一.类目 指向已知的类中添加新方法,不破坏封装性.已知类可以是自定义的类和系统的类. 1.类目的实现和声明 建一个学生类,并增加类目 (1).声明(是在Student+Working.h中) 必须引入原类,这里是Studnet类. (2)  .实现(是在Student+Working.m中) 注意引入. 2.类目的使用 i.不能再类目中添加实例变量 j.可以为一个类添加多个类目,但类目名和方法名不能重复 k.不能随意重写类目的方法 3.类目的局限性 i.如果在类目中重写父类的方法可能导致supe…
OC分类(类目/类别) 和 类扩展 - 全解析   具体见: oschina -> MyDemo -> 011.FoundationLog-OC分类剖析 http://blog.csdn.net/u013378438/article/details/44491703     关于OC分类,非常重要的知识点:   >>分类能够对实例方法,类方法进行扩展,但不能够添加类的属性及实例变量. >>分类能够像类本身一样,调用self来访问类的方法,属性. 但对于通过新建.h与.m…
小结: 1. 海量异构数据的存储问题 如何将不同品类,异构的数据统一存储起来呢? (1)全品类通用属性统一存储: (2)单品类特有属性,品类类型与通用属性json来进行存储: 2. 入口层是Java研发的,聚合层与检索层都是C语言研发的 3. (1)数据库提供“帖子id”的正排查询需求: (2)所有非“帖子id”的个性化检索需求,统一走外置索引: 4. 定期全量重建索引 5. 为应对100亿级别数据量.几十万级别的吞吐量,业务线各种复杂的复杂检索查询,扩展性是设计重点: (1)统一的代理层,作为…
不是所有的方法都可以被覆盖的!比如:intValue就不能被覆盖!! 原因正在查找中! 别人的电脑上却可以! 类目.h件 #import <Foundation/Foundation.h> @interface NSString (Email) - (BOOL)stringEmail; @end 类目.m文件 #import "NSString+Email.h" @implementation NSString (Email)//类目 - (BOOL)stringEmail…
http://blog.csdn.net/haishu_zheng/article/details/12873151   category和extension用来做类扩展的,可以对现有类扩展功能或者修改其功能. 在iOS中category应用是非常广泛的,系统自带的很多类都有多个category扩展功能.   一般category中可以定义新的方法.重写类原来的方法和添加readonly属性   而extension可以认为是匿名的category,但是这个extension相对于categor…
什么是id,与void *的区别 id在Objective C中是一个类型,一个complier所认可的Objective C类型,跟void *是不一样的,比如一个 id userName, 和void *pUserName,[userName print] 是可以的,但[pUserName print] 在编译时就会报错,因为ObjeciveC的编译器看到id,会假定它可以接受任何message,虽然在runtime时可能并不是这样的,但pUserName并不是Objective C类型,编…
Objective-C世界中的面向对象程序设计 面向对象称程序设计可能是现在最常用的程序设计模式.如何开发实际的程序是存在两个派系的-- 面向对象语言--在过去的几十年中,很多的面向对象语言被发明出来,包括Simula.Eiffel.和Smalltalk. 面向对象添加(addition)--部分原因是让程序员学习一门全新的语言是一件比较困难的事情,因此很多混合语言被开发出来,其中包括C++ .Java.Python.C#以及Objective-C.面向对象特性也被添加进来诸如PHP之类的语言,…
OC中类目无法直接添加属性,可以通过runtime实现在类目中添加属性. 在学习的过程中,试着为UITextField添加了一个类目,实现了当TextField被键盘遮住时视图上移的功能,顺便也添加了点击空白回收键盘功能.效果预览使用时不需要一句代码就可以实现上述功能[github链接](https://github.com/a1419430265/CHTTextFieldHealper) .h文件 // // UITextField+CHTPositionChange.h // CHTText…
如果在ECshop后台批量添加过大量类目的人都能体会到是多么的不方便(这点还是要说一下ECshop的产品经理,细节上还是要多注意),每次添加都需要在几百个类目里面找到要添加的父类目也是一个麻烦事,比如我的 Tao Fashion 站,里面一共有400多个类目 每次添加一个新类目,即使是同一父类目下的,都需要从头再找一遍,非常不方便,设置类目的顺序的时候,也要自己记着这个父类目下已经添加几个了,记着下一个添加的时候+1,经常弄错. 咱是新人类,要用技术的办法解决这个问题,实现在Category L…
ECshop支持针对每个新建的类目自定义Keywords.Description Meta信息,好处就不用说了,帮助SEO或者让浏览者了解这是什么页面,但如果有几百个类目的时候,人工去写这些类目又有点累人(咱不干体力劳动的 活),花了点时间,写了个自动生成Keywords.Description的PHP脚本,支持四级分类,原理是子类目包含爸爸类目.爷爷类目...到顶 级类目名作为关键词,然后一句描述的话,包含这些类目的名称.大家可以根据自己需要简单的修改. 用法,在你的后台类目,默认是Admin…