OC中在.h和.m中声明的属性和成员变量有何区别?


相比Swift而言,OC规矩太多.

差不多,.h中声明的属性和成员变量均可以在子类中访问到.而.m则不可.而属性其实也就是成员变量的一种简写,其内部自动包含了getter和setter方法.

如图:ViewController是SubController的父类.在ViewController.h中声明成员变量imageView1和属性imageView2

在ViewController.m中同样声明了成员变量imageView3和属性imageView4.

在ViewController.m中

1,通过self.xxx的方法可以出现imageView2和imageView4

2.通过 _XXX的形式只能出现imageView2,imageView4

3.通过XXX的形式只能出现imageView1.imageView3

在子类SubController.m中

1.通过self.XXX的形式只能出现imageView2

2.通过 _XXX的形式什么都不会出现.

3.通过XXX的形式可以出现imageView1

开发中,一般在成员变量前面加个_.

这样一来就明了了.

在本类中访问,通过self.XXX可以访问到imageView2和imageView4.

通过_XXX都可以访问,XXX则都不能

子类中,通过self.XXX可以访问imageView2,通过_XXX可以访问到imageView1,XXX则都不能.

(其中很多和旧版的OC语言有关,小生不了解)

 

总之,差不多就是在.h中声明的属性或者成员变量在其子类中均可以访问到,只不过形式不一样.

                     在.m中声明的属性或者成员变量只能在本类中访问到.

而属性其实就是成员变量的简写,内部自动包含了getter和setter方法.

我的理解是这样,不知对否.

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM