【IOS学习笔记(一)】IOS中.h和.m文件中的变量和方法

来源:互联网 发布:韩日军力对比知乎 编辑:程序博客网 时间:2024/03/29 14:01

楼主2年前曾做过IOS项目,当时工作繁忙没有时间记录下所学的点点滴滴,现在楼主打算重新学习,特此写下一些IOS的相关知识。

IOS与C++一样,拥有.h头文件和.m文件。在C++中一切变量和函数声明都定义在.h文件中,这一点IOS与此相似却也有些不同。

IOS头文件定义变量的地方有两处:@interface的{ }里面和外面。在与头文件对应的.m文件中的使用是没有什么区别的,直接使用即可,主要区别在于外部调用。

写在@interface的{ }里面的变量只能在本类和子类(派生类)中使用,相当于C++中的保护型(protect)。

而写在@interface的{ }外面的变量可以在任何类中使用,相当于C++中的公有型(public)。

方法的定义就相对简单,带有“-”号的方法只能在本类和子类(派生类)中使用,相当于C++中的保护型(protect)。

带有“+”号的方法可以在任何类中使用,相当于C++中的公有型(public)

但是,IOS对于开发者使用公有型(public)变量和方法做了十分谨慎的限定,公有型的变量有@property属性进行引用计数和内存限制(这个以后再讲)。而带有“+”号的公有型方法还有static的属性,可以直接使用类名进行调用。


C++中的私有型(private)与保护型和公有型的变量(方法)区别在于无法被外部调用,因此IOS做了个巧妙的方法加以区别,将私有型变量(方法)放入.m文件中定义。

在.m文件的开始处有一个@interface定义,写在{ }里面的变量就是本类的私有型(private)变量。在{ }外面是不能再定义变量只能定义方法,这里定义的方法也是私有型的。

理论讲解到这里结束,下面我们来测试一下。


博主定义了一个Test1类继承于Test类,因此在Test的.h头文件中定义的变量a,b,c和方法add()、add1()都可以调用,而在.m定义的变量d和方法add2()却无法调用。


在testFather方法中无论使用什么方法都无法调用到变量d和方法add2,提示无法找到变量d和方法add2。


至此结束,欢迎大家指正,交流学习。


0 0