iOS开发---分类和扩展(Categories和Extensions)
1 #import “UIViewController.h”
2 @interface UIViewController(CustomView)
3 -(void)extMethod;
4 @end
1 #import “UIViewController+CustomView.h”
2 @implementation UIViewController(CustomView)
3 -(void)extMethod;
4 @end

1 @interface MyObject:NSObject
2 {
3 NSNumber* number;
4 }
5 -(NSNumber*)getNum;
6 @end
7
8 @interface MyObject(Setter)
9 -(void)setNum:(NSNumber*)num;
10 @end
11
12 @implementation MyObject
13 -(NSNumber*)getNum
14 {
15 return number;
16 }


1 @interface MyObject:NSObject
2 {
3 NSNumber* number;
4 }
5 -(NSNumber*)getNum;
6 @end
7
8 @interface MyObject() //注意这里的括号里面是没有名字的
9 -(void)setNum:(NSNumber*)num;
10 @end
11
12 @implementation MyObject
13 -(NSNumber*)getNum
14 {
15 return number;
16 }
17
18 -(void)setNum:(NSNumber*)num
19 {
20 number = num;
21 }
22 @end

3.私有扩展
在以往写代码时,我们经常是把声明写在.h文件中,把实现写在.m文件中.
但是在实际开发中,如果把声明写在.h文件中会暴露程序很多属性(成员变量、成员变量的get和set方法),为了安全考虑,引入了类扩展的概念.
类扩展中的属性是私有的。在进行程序开发时,比如在ViewController.m文件中,常常会发现在
@implementation
@end;
上面多了一个:
@interface ViewController ()
//
@end;
上面代码就是类扩展,也就是类的私有扩展,以后就可以把以往写在声明里的代码写在这里面
iOS开发---分类和扩展(Categories和Extensions)的更多相关文章
- iOS开发系列--App扩展开发
概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...
- ios开发分类--NSDate+Helpers
#import <Foundation/Foundation.h> @interface NSDate (Helpers) @end #import "Date.h" ...
- (转)iOS分类和扩展(Categories和Extensions)
分类(Category) 分类能够做到的事情主要是:即使在你不知道一个类的源码情况下,向这个类添加扩展的方法. 此外,分类能够保证你的实现类和其他的文件区分开. #import “UIView ...
- Categories VS Extensions (分类 vs 扩展)
转载翻译自:http://rypress.com/tutorials/objective-c/categories 一.Categories(分类) Categories是一个把单个类定义分 ...
- iOS 类别和扩展(Categories和Extensions)
分类(Category) 分类能够做到的事情主要是:即使在你不知道一个类的源码情况下,向这个类添加扩展的方法. 此外,分类能够保证你的实现类和其他的文件区分开. 1 #import “UI ...
- iOS项目开发日常之创建文件(协议、类、分类、扩展)
iOS项目开发过程中,是以不断创建文件的形式进行着的. 创建得比较频繁的文件类型是: 这两个类型中创建的文件有:子类.分类.扩展.协议四种文件,如下: 这四类文件是频繁创建的,我们来看一下各自分 ...
- iphone 开发Categories 、Extensions 区别 --转
Category和Extension这两个概念,即便对于Java程序员,可能也会感到陌生.这是Objective C为程序员提供的两个强大的动态机制——简单地说,它们允许程序员为已有的对象添加新的方法 ...
- iOS开发笔记系列-基础5(分类和协议)
分类 在Objective-C中,除了通过新建子类的方式来向类添加新方法外,还可以通过分类的方式.分类提供了一种简单的方式,将类的定义模块化到相关方法的组或分类中,它还提供了扩展现有类定义的简便方式, ...
- iOS中的分类和扩展
一.什么是分类? 概念:分类(Category)是OC中的特有语法,它是表示一个指向分类的结构体指针.根据下面源码组成可以看到它没有属性列表,原则上是不能添加成员变量(其实可以借助运行时功能,进行关联 ...
随机推荐
- Reflector 已经out了,试试ILSpy[转]
Reflector是.NET开发中必备的反编译工具.即使没有用在反编译领域,也常常用它来检查程序集的命名规范,命名空间是否合理,组织类型的方法是否需要改善.举例说明,它有一个可以查看程序集完整名称的功 ...
- oracle中,拼接的字符串给游标赋值
直接open cur from sql;即可. 例子: create or replace procedure test(tableName varchar2) is TYPE cur_type IS ...
- Segmetation fault你来的真不是时候
问题是这样的,今天一个简单的C程序,用gcc编译成汇编语言后,本来想在里面改点东西,结果运行时就报了"Segmetation fault".它丫来的还真不是时候,刚好最近正好烦它呢 ...
- C# 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节
一项目直接在VS里面,调试就可以正常运行.但部署到IIS下就提示,配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 ...
- fiddler的使用
查看fiddler监听的端口: tools=>fiddler options=>connections=>fiddler listens on port 8888 如果想抓curl发 ...
- linux 常用目录
/bin 执行文件 ls, mv, rm, mkdir, rmdir, gzip, tar, telnet /boot linux核心文件内核 vmlinuz-xxx(Linux 的 Kernel ...
- 【Mysql】权限管理
mysql权限介绍 mysql中存在4个控制权限的表,分别为user表,db表,tables_priv表,columns_priv表. mysql权限表的验证过程为: 1.先从user表中的Host, ...
- 张小龙《微信背后的产品观》之PPT完整文字版
微信回顾 433天,一亿用户 成为移动互联网的新入口 启动(2010年11月19日) 用户数突破1亿 1.0 1月26日 2.0 5月10日 语音对讲 2.5 8月3日 查看那附近的人 3.0 10月 ...
- 编译器问题:运行maven,报错-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
1.新建环境变量M2_HOME 2.指向你的maven安装目录 例如 :M2_HOME=D:\Apps\apache-maven-3.3.9 3.进入Myeclipse进行修改,Window-> ...
- Android相机使用(系统相机、自定义相机、大图片处理)
本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显示出来,该例子也会涉及到Android加载大图片时候的处理(避免OOM),还有简要提一下有些人Surf ...