Objective-C基础1-类目(Category)和延展(Extension)的区别
2015-12-24 19:36
417 查看
Objective-C基础1-类目(Category)和延展(Extension)的区别
类目也叫分类,主要作用是为没有源代码的类添加方法。通过类目添加的方法会成为原类的一部分。从而达到扩展一个类的功能。
NSString+Addition.h文件
#import <Foundation/Foundation.h> //类目的接口部分(声明添加的方法) //不能添加实例变量 //子类可以继承父类所有的方法,包含Category中的方法 //类目包含两部分:接口部分、实现部分 //类目中添加的方法属于类的一部分 //类目中的方法的优先级高于类中定义的方法 //(类目中的方法与类中的方法重名了的时候,原方法会被覆盖) @interface NSString (Addition) - (void) test; @end
NSString+Addition.m文件
#import "NSString+Addition.h" @implementation NSString (Addition) - (void) test{ NSLog(@"test!NSString中添加的方法!"); } @end
类的延展
Person.h
#import <Foundation/Foundation.h> @interface Person : NSObject -(void) sayHi; @end
Person.m
#import "Person.h" //Person类的延展--体现封装-类的延展写在类的实现文件中 .m文件中 //延展是给有源代码(有.m文件)的类使用的 //延展只有接口部分,没有实现部分。延展是用于管理实例变量和“私有”方法的 //在延展中声明的方法,在类的实现部分进行实现 @interface Person () { //类的内部需要使用,但是不想对外公开的 NSString * _name; NSString * _gender; } //仅在类的内部使用,不提供给类的外部使用 - (void) introduce; //声明私有方法时,可以使用前缀,作为区分 //不要以下划线开头- (void) _test; //苹果自己内部使用 - (void) private_test; @end @implementation Person -(void) sayHi{ NSLog(@"hi"); } - (void) introduce{ NSLog(@"my introduce"); } @end
著作权声明:本文由http://www.bestnathan.com/原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
相关文章推荐
- Objective-C 集合之NSArray的常用方法
- Objective-C NSObject 的实现分析(2014-10-23更新)
- Objective-C Runtime 总结:消息机制 篇
- Object.ReferenceEquals
- 遍历系统的所有ObjectType和TypeIndex
- iOS开发系列--Objective-C之KVC、KVO
- Objective-c语言_内存管理2(代码)
- Objective-C 和 Core Foundation 对象相互转换的内存管理总结
- Ubuntu snmpwalk 执行报错 “Unknown Object Identifier”
- ActiveX控件之ActiveXObject is not defined
- JSONObject、JSONArray
- Objective-C:Foundation框架-常用类-NSObject
- Objective-C:Foundation框架-常用类-NSDate
- Objective-C:Foundation框架-常用类-NSNull
- Objective-C:Foundation框架-常用类-NSValue
- Objective-C:Foundation框架-常用类-NSNumber
- Objective-C:Foundation框架-常用类-NSMutableDictionary
- ios objective-c java php des加解密统一
- Objective-C:Foundation框架-常用类-NSDictionary
- Objective-C:Foundation框架-常用类-NSMutableArray