前言
曾经我定义变量一直都是定义在.h文件里。后来看别人的代码,发现非常多人都把一些变量定
义在.m文件里。后来我自己试了一把,发现变量既能够定义在.h文件里也能够定义在.m文
件中,尽管这是个非常小的问题,也许有些人会说既然都能够,那不随你定义在哪里喔,可是
我一直认为肯定会有差别的。后来我最终找到了一个能说服我的解释了。
一、变量定义在.h文件里
@interface BaseTableViewController : BaseNavViewController
{
UIView *backgroud;
UIActivityIndicatorView *activity;
UIImageView *imageNonet;
UILabel *labError;
UILabel *labRetry;
}
二、变量定义在.m文件里
@interface BaseTableViewController ()
{
UIView *backgroud;
UIActivityIndicatorView *activity;
UIImageView *imageNonet;
UILabel *labError;
UILabel *labRetry;
}
事实上这两种定义方式从写法上来说是没有问题的。可是从代码规范来看却是有问题的。
.h文件里一般放的是一些对外公开的变量或者是方法,而.m文件里一般放的是自己私有的一些变量和方法。比方说,我们要写一个SDK给别人调用,我们把写好的代码打包成一个静态库,调用者仅仅能够看到.h文件,那么我就把须要传入的參赛变量和调用的方法写在 .h 文件里。对于一些与调用者无关而我们自己要须要的变量或是方法我们就能够放在 .m文件里。事实上通俗的说就是对外公开的变量或是方法就定义在 .h 文件里。对内私有的变量或是方法就定义在 .m 文件里。
补充
假设定义一个属性类,供其它类调用,则这些属性所有要定义在.h文件里。
由于定义在.m文件里的属性,其它的类是訪问不到的。