ios-为什么要把这些.h文件的内容写到.m文件里?

问题描述

为什么要把这些.h文件的内容写到.m文件里?

现在在看别人的代码 发现他们都把h文件的内容写到m文件里
比如:

 @interface MyTreeViewController ()
{
    NSArray *tree;
}
@end

@implementation MyTreeViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

为什么要这么做?为什么不直接在头文件里写
@property(strong,nonatomic)NSArray *tree;
??

解决方案

@interface MyTreeViewController () 是一个特殊分类,叫做 匿名分类。顾名思义,它没有分类名

在匿名分类中可以声明变量,这些变量都默认是@private私有变量,即使放在.h中仍然如此。

之所以放在.m中,是因为这是常见写法,一些不希望外部访问的@property、方法、变量,都可以使用分类的形式声明在.m中,这样就可以屏蔽外部访问。

具体可以参考 变量声明的不同形式,作用域等

解决方案二:

这是oc中扩充类的一种方式,叫做延展(Extension)主要作用是管理私有的方法和实例变量

解决方案三:

不需要外部调用的时候就在.m中定义就行了

解决方案四:

.m中对外部隐藏内部实现,外部不可访问自己的属性或者方法。

而在.h中应该对外展现必要的方法接口。方便调用。

解决方案五:

写在.h中的是公用的,可以直接调用,也可以通过KVC调用,.m中的是私有的,外部类无法调用到.m中的参数。有些关键参数、属性不希望暴露给外界,就会写在.m中。如果打包成.a文件或者framework,别人使用的时候就看不到了。

解决方案六:

@interface写在.m文件可以对外隐藏属性,别的类就访问不到

解决方案七:

怎样在main.m里面实现啊?

时间: 2024-10-05 01:04:30

ios-为什么要把这些.h文件的内容写到.m文件里?的相关文章

数据分析-C# 读取4g大小的txt文件,并写成xml文件

问题描述 C# 读取4g大小的txt文件,并写成xml文件 我这边有个日志文件,非常的大,这边需要对这个日志文件进行数据分析, 对于每一行的数据进行处理比如ip地址相同的数据:ip:127.0.0.1 , num 22, starttime 2015-2-5 12:21:20 endtime 2015-2-5 23:59:59提取这样格式的数据 并写入xml文件中,由于数据非常的大,写人的非常慢 解决方案 直接用Hadoop,Spark等分布式框架做分析吧,数据量太大了. 这么大的XML解析起来

制作网页时是先准备CSS文件还是先写好HTML文件?

css|网页 CSS文件先准备 还是先写好HTML文件?网上有很多种答案:先写HTML后写CSS:先写CSS后写HTML:两者同时写. 我的准则是先写HTML打好基础,然后再写CSS进行表现的控制! 对于初学者我建议两者一起写,先写CSS或者先写HTML对于初学者都不是恰当得的方法. 如果让一个人编写代码,你告诉他先写HTML,写完后 HTML不能修改了,然后你写CSS,如果他可以写出来,那这个人一定是一个水平非常高的Builder了!所以对于初学者,多数情况下我建议同时编写,具体我说一下步骤:

centos-Centos 解压文件,文件比被解压的文件还小,并且文件的角色被改变了

问题描述 Centos 解压文件,文件比被解压的文件还小,并且文件的角色被改变了 解决方案 这个大小是文件夹大小,并不会包含文件里面内容的大小.文件owner可以用chown修改

PHP文件缓存内容保存格式实例分析_php技巧

本文实例讲述了PHP文件缓存内容保存格式,对于进行PHP项目开发非常具有实用价值.分享给大家供大家参考借鉴.具体分析如下: 1.PHP文件缓存内容保存格式 PHP文件缓存内容保存格式主要有三种: (1)变量 var_export 格式化成PHP正常的赋值书写格式: (2)变量 serialize 序列化之后保存,用的时候反序列化: (3)变量 json_encode格式化之后保存,用的时候json_decode 互联网上测试结果是:serialize格式的文件解析效率大于Json,Json的解析

dos命令如何选择某个文件夹下所有的.cpp文件和.h文件(包括文件夹下子文件夹中的文件)

问题描述 dos命令如何选择某个文件夹下所有的.cpp文件和.h文件(包括文件夹下子文件夹中的文件) dos命令如何选择某个文件夹下所有的.cpp文件和.h文件(包括文件夹下子文件夹中的文件).最好能过用一句代码表示,谢谢!!! 解决方案 这个要一个个选吧!记得好像没有全选 解决方案二: linux下重命名文件或文件夹命令遍历文件, 包括子文件夹----------------------

POST请求,iOS开发时,图片上传的时候,类型是文件流,怎么写

问题描述 POST请求,iOS开发时,图片上传的时候,类型是文件流,怎么写 POST请求,iOS开发时,图片上传的时候,类型是文件流,怎么写,在线等 解决方案 http://blog.csdn.net/zhangkongzhongyun/article/details/8277426 解决方案二: 给个思路就行,或者给个链接

iOS版微信新技能:可直接向PC端传文件

苹果iOS版微信在更新最新版本6.3.19后出现了一个更新日志中没有说明的小惊喜,可以向PC端传输文件,支持图片,视频.语音等消息传输. 用iPhone最新版微信扫描登录Windows端微信后,在iPhone端微信消息界面上出现了"Windows微信已登录"的提示,点击后则出现具体功能界面. 在功能界面,出现了"手机静音"和"传文件"两个新功能.其中手机静音是指在这里可直接一键将手机微信设置成静音模式,点击"手机静音"按钮,则

iOS 7系统中仅支持播放等同于CD音质的音频文件

苹果正计划为全新的iOS 8操作系统添加高清音频播放功能,为了配合这项新技术,苹果可能还会发布一款全新的耳机和重新设计过的Lightning数据线. 当前iOS 7系统中仅支持播放等同于CD音质的音频文件,像苹果ALAC格式等具有更高采样率的音频文件则需要通过第三方应用才可进行播放,但在iOS 8中这一情况也许将发生改变. 如果你留意国内智能手机市场的话,会发现想要提高音乐播放品质一般需要三方面的支持.首先是硬件,需要将HiFi芯片植入到手机.其次是耳机,需要有一幅能听出音乐细腻程度或高度降噪的

ios xcode 头文件-Xcode如何包含第三方的文件

问题描述 Xcode如何包含第三方的文件 Xcode如何包含第三方的文件,系统总是提示找不到头文件. http://blog.csdn.net/secondtonone1/article/details/39316277