XCode中.h 和 .m 文件中的同一个@interface有何区别
来源:互联网 发布:淘宝推广培训 编辑:程序博客网 时间:2024/06/03 18:51
玩过ios开发的都知道,在XCode 中创建一个新的类文件,会在 . h 和 .m 文件中自动创建两个几乎完全一样的@interface。
比如: 创建一个UIViewController 的实例MainController:
在 .h 文件中:
#import <UIKit/UIKit.h>@interface MainController : UIViewController@end
在 .m 文件中:
#import "UIViewController.h"@interface MainController ()@end
乍一看,两个@interface几乎一样。
你可以在 .h 文件中,声明 属性 和 成员变量; 也可以在.m文件中声明这些属性 和 成员变量。 更为有意思的是,你甚至可以在storyboard 中,通过拖拽方式,将一个IBOutlet 拖拽到 .h 或 .m 文件中。
尽管可以随意操作,但从本质上讲,还是存在较大差异的。
属性:
属性的区别就是,在.h文件中声明的属性,外部类可以通过“类实例.属性”来调用,但在.m中声明的则不可以,获取和设置的方法,只能是通过setValue:forKey和valueForKey来实现。
成员变量:
成员变量,有三种权限,就是大家都知道的@private、@protected、@public ,写在.m文件中时,相当于是@private权限,子类无法访问,验证了一下,做权限修改也无效。而写在.h文件中,默认是@protected权限,子类可以访问,可以做权限修改。
再进一步想想,也容易理解。
因为 .h 文件可以被其他.m 文件 #import。 自然就可以被其他.m文件访问; 而在.m 文件中所声明的,其实就是一个 static的 变量或方法,自然不能被其他文件访问。
小结:
在.h文件中声明的属性,外部类可以调用,但在.m中声明的外部类则不可以调用。
在.m文件中声明的成员变量,只有本类可以访问,在.h文件中声明的成员变量,本类和子类可以访问。
- XCode中.h 和 .m 文件中的同一个@interface有何区别
- iOS:如何理解.h 和 .m 文件中的同一个@interface
- 如何理解.h 和 m 文件中的同一个@interface
- 如何理解.h 和 .m 文件中的同一个@interface
- 在.h文件和.m文件里使用import指令有何区别?
- 在.h文件和.m文件里使用import指令有何区别?
- 在.h文件和.m文件里使用import指令有何区别?
- 在.h文件和.m文件里使用import指令有何区别?
- 在.h文件和.m文件里使用import指令有何区别?
- xcode中的.h和.m文件分别是什么意思?各有什么用?
- iOS .h文件.m文件中的@interface
- M-JPEG、MPEG4、H.264都有何区别
- M-JPEG、MPEG4、H.264都有何区别
- C++中.h文件和.m文件的区别
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- IOS Xcode开发中的文件后缀名区别m,mm,cpp,h
- 日期倒计时
- Alcatraz的安装
- Git学习 <day2>
- excel矩阵小tips
- 纯Java+eclipse+Asix2+Tomcat8+SQLite (搭建本地服务器)
- XCode中.h 和 .m 文件中的同一个@interface有何区别
- iOS_隐藏顶部状态栏方式
- 页面加载动画,加载完后隐藏动画
- jQuery 序列化表单数据 serialize() serializeArray()
- insert into FND_PROFILE_OPTION_VALUES
- Android 屏幕适配方案(三)增强百分比布局
- Android Studio 配置指南
- 在linux上如何做一个简单的vad功能,即录音时说话停止即录音停止。
- ios开发防止键盘遮住文本框