OC

Knowledge OS
主帖 10 条回复

请问这2个声明的实例变量用法有区别吗?

kyrr kyrr · 2013年12月07日 · 阅读 1 · 无人欣赏。
#import "XYZViewController.h"

    @interface XYZViewController ()
    {
        int _Value1;
    }
    @end

    @implementation XYZViewController
    {
        int _Value;
    }
    。。。
    @end

请问这2个声明的实例变量用法有区别吗?

回复

10 条
#1
akunamotata
2013年12月07日

有区别吧,interface的变量是向外暴露的。。。

#7
yuzhouwww
2013年12月09日

6楼 @nickel 同意!.h只放向外部开放的属性和接口,我现在IBOutlet都拖到.m里面了

#10
nickel
2013年12月09日

8楼9楼,哦,我没仔细看代码,确实是的,上面那个声明就是匿名category。所以上面两种声明方法都是没有“暴露性”的。

这两种声明我没发现有什么使用上的差别,但设计本意是有点差别的,毕竟上面那种是采用Category的形式,如果不使用Category又不想暴露变量声明,就用下面那种。我觉得这可能是objc演变过程中遗留下来多余的方法。

如果你大量采用匿名category的形式,下面那种方法就可以忽略,否则你就用下面那种。

登录 或者 注册