类与函数
类
类声明的格式为:
1 | @interface ClassName:superClassName |
类实现的格式为:
1 | @implementation ClassName |
下图为类声明的语法展示:
类中的变量部分和方法部分的声明方式与其他语言不一样,类中的变量需要写在大括号内。
函数(方法)
在objective-c中,函数(方法)的声明和其他语言中函数的声明有较大不同,在oc中,函数中除了第一个参数外,每个参数都需要一个参数名字,这个参数名字主要用于告诉使用者此参数的含义,这个参数名字不会在实现中被实际的调用,调用时使用的还是对应的参数。
下面为参数声明的语法展示:
函数的声明:
1 | @interface Student : NSObject |
函数的实现:
1 | @implementation Student |
类中变量的访问权限
类中的变量有三种访问权限,分别为@public, @protected, @private,默认是@protected。
这三个关键字对应的权限如下:
Tips
1.在ObjC中推荐成员变量名以_开头,如NSString *_name;
2.@package修饰的变量为在框架内是公共的,但是框架外是私有的;
3.在ObjC中所有的对象类型的变量都必须加上“*”,在ObjC中对象其实就是一个指针,但是基本类型不用加”*”;
4.在ObjC中使用[]进行方法调用,在ObjC中方法调用的本质就是给这个对象或类发送一个消息;
5.在ObjC中类的实例化需要两个步骤:分配内存、初始化;
6.公共成员的调用使用“->”操作符,比如person->_birthday;
7.属性变量的调用使用“.”操作符,比如person.age;
8.在ObjC中方法分为静态方法和动态方法两种,动态方法就是对象的方法,静态方法就是类方法;
9.在ObjC中使用“-”定义动态方法,使用“+”定义静态方法;
10.如果一个方法在.h中有声明则该方法是公共方法,如果没有在.h中声明直接在.m中定义则该方法是私有方法,外部无法访问;
11.在ObjC中方法的参数类型、返回值类型需要放到()中,而且参数前必须使用冒号,并且此时冒号是方法名的一部分;
12.如果不通过@property定义属性变量,可以先定义@public的变量,然后定义相应的getter和setter方法,getter方法写作变量的名字,setter方法写作setA,如下,定义的变量为int _age;
1 | //声明age的setter、getter方法 |
然后就可以通过person.age进行变量的访问了。
13.在ObjC中关键字self不仅可以表示当前对象还可以表示类本身,也就是说它既可以用在静态方法中又可以用在动态方法中;
14.不要在变量的set方法中使用self,不然容易造成死循环;
15.使用“.”操作符来访问属性变量,其实是ObjC中的语法糖,其意义和c语言中“.”操作符不一样,在ObjC中相当于[obj age],但具体是调用get还是set方法要看具体的是赋值操作还是取值操作;
16.通过description可以显示类的信息(默认为类名和对象地址),使用%@格式化输出时便会调用此方法打印类的信息
17.函数重写不需要关键字来修饰,不同于swift中的override