iOS之类扩展
来源:互联网 发布:知史以明鉴 查古以至今 编辑:程序博客网 时间:2024/06/02 13:12
一般初学者在项目开发中会经常遇到以下奇怪的用法
新建一个 ViewController 类,那么xcode会自动创建以下文件:ViewController.h 和 ViewController.m
ViewController.m 如下
为什么在.m 文件里面的开头,还会有一个 @interface ViewController的声明?
新建一个 ViewController 类,那么xcode会自动创建以下文件:ViewController.h 和 ViewController.m
ViewController.h 如下
@interface ViewController : UIViewController@end
ViewController.m 如下
@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.}- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
为什么在.m 文件里面的开头,还会有一个 @interface ViewController的声明?
原来,在objective-c中把.m文件中的@interface部分为类扩展(Class Extensions)。一般来说.m文件不像.h文件一样暴露到外部,所以.m文件中声明的方法外面并不知道,但是实际上还是可以调用的。 把要公开的信息(变量,属性,方法)定义在头文件里, 把要隐藏的信息定义在类扩展里,只是为了隐藏私有信息, 不需要被外界知道的就不要放在头文件里, 这样可以隔离接口和实现。因此其被设计出来就是为了解决两个问题的,
其一,定义类私有方法的地方。
其二,实现public readonly,private readwrite的property(意思是在h头文件中定义一个属性对外是readonly的,但在类的内部希望是可读写的,所以可以在m源文件中的@interface部分重新定义此属性为readwrite,此时此属性对外是只读的,对内是读写的)。
此外,也可在此部分申明变量和属性,但申明的变量,属性和方法均为私有的,只能够被当前类访问,相当于private。
0 0
- iOS 之类的扩展
- iOS之类扩展
- iOS开发之类别、扩展
- iOS入门编程之类扩展与分类的区别
- iOS之类别(Category)、类扩展、继承的区别
- Objective-C基础之类别,扩展,协议
- objective-c之类别与扩展
- ios学习笔记之类实现
- ios学习笔记之类别
- IOS开发之类和对象
- ios扩展
- ios学习笔记之类声明(接口)
- IOS UIView 之类方法篇 Class Methods
- IOS UIView 之类方法篇 Class Methods
- iOS之类别(category)的使用
- iOS复习笔记14:常用数据结构之类
- IOS开发之类的声明与实现
- 浅谈iOS面向对象之类与对象
- codesign
- 用svn checkout 出来的项目右下角不显示对勾,怎么解决?
- python 获取网页中所有email地址
- Android存储访问及目录
- 102-资源打包,内存分配,内存泄漏,私有API,硬件信息的获取,使用imageName加载图片和使用imageWithContentsOfFile加载图片的场合优缺点及内存分析
- iOS之类扩展
- 中文计算机核心期刊排名及投稿信息
- 透过豆瓣上一篇“如何快速学习 Ruby on Rails?”,思考如何去学习新的技术
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- Linux 常用命令之lsof
- GLES 顶点数组之 结构数组 与 数组结构
- Storm 是如何跟踪一条消息以及它衍生出来的消息都被成功处理的
- 第六章 应用层(网络)--基于Linux3.10
- org.json.JSONObject的optXXX方法