1.不带参数方法定义
首先oc中的方法有两种:对象方法,类方法
对象方法
必须要以-号开头 2).将数据类型(返回值,参数)放在小括号里面,而且只有数据类型才放到括号里面. 3).interface里面只能写方法的声明
先写c的函数void test()
oc的对应的方法 - (void)test;
方法的实现放在implementation中
-(void)test{
在方法实现中可以直接调用自己的成员变量
}
Phone *phone = [Phone new];
[phone test];
最后 画图说明 isa成员变量(指针)不是我们创建的,是类原来就有的,专门用来指向方法列表
方法的调用叫消息机制
再写一个有返回值的方法
2.带参数方法定义
1)总结前面讲的不带参数的方法
无返回值,有返回值
2)先声明c语言写带一个参数的方法
void sendSignal(char *number);
写oc语言声明带一个参数的方法
注意:当方法有参数时,要在参数类型前面加:冒号
冒号也是方法名的一部分
- 符号不是方法名的一部分
测试:1.翻看调用方法名时是加:号的 2.写一个不带:号的方法可以与刚才的方法同时存在,说明是两个方法
-(void)sendSignal:(char *)number;
3)在@implementatipn中写方法的实现
-(void)sendSignal:(char *)number{
NSLog(“%s”,number);
}
4)在main.m中调用刚才的带参数方法,因为是对象方法,所以要用对象来调用
Phone *phone = [Phone new];
[phone sendSignal:”12305”]; 再次分析一下内存中的实现
5)声明一个带多个参数的方法
方法名是:sendMessage::
-(void)sendMessage:(char *) number :(char*)message;
实现,
-(void)sendMessage:(char *) number :(char*)message{
NSLog(“%s,%s”,number,message);
}
然后调用
[phone sendMessage:”12306” :”good foryou”];
说明这样不好,因为当调用方法的时候,不知道具体参数是什么,所以进行修改,在每个参数前面加上一个标签,来说明对应的参数
创建一个对象:
@interface Person :NSObject
{
int _age;
}
- (void) run;
- (char *)personCallPhone:(char*)phone message:(char *)message;
@end
@interface Person :NSObject
{
int _age;
}
- (void) run;
- (char *)personCallPhone:(char*)phone message:(char *)message;
@end
OC字符串:
1)c的字符串表示方法 char* 或数组
直接了当告诉NSString是一个字符串类 @“abc”这就是一个字符串类 然后用一个nsstring类保存这个对象
2)打印 先讲c的打印引出oc的字符串打印
3)>int a = 4, b = 6; 想生成一个带有这两个变量值的字符串
>讲创建nsstring的方法 [nsstring stringwithformat:@“”,];
4)>通过讲解将字符串写成一个类的好处,引出length方法 ,
>再讲解length 以各国的字符为单位返回长度 而c当中 的strlen是以字节为单位
5)总结nsstring类,将面向对象的好处
>在用NSLog输出字符串时,c中的中文无法输出(用%S) 所以oc中的nsstring更符合人们的习惯多用面向对象的思想
BOOL数据类型讲解
BOOL是oc中的一种数据类型 ,
他的值有两种:YES和NO
实际就是通过typedef int BOOL给int起的一个别名,所以实际上BOOL类型的变量是可以输出所有的整数值的.
但是如果要给变量赋值YES或NO是,只能打印出1或0.
所以对于BOOL类型的YES和NO这两种值,在微观意义上就是1和0.但是在宏观上可以理解为非零和零