pragma mark 第一个OC方法2
pragma mark 概念
/**
// OC中的类方法用 + 表示, OC中的对象方法用 - 表示
*/
pragma mark 代码
#import <Foundation/Foundation.h>
/*
事物名称:iPhone
属性: 颜色, 型号, CPU, 尺寸 == 成员变量
行为: 打电话, 发短信, 上网, 获取本机信息 == 成员方法
*/
// 1.编写类的声明
@interface IPhone : NSObject
{
@public
float _model; // 型号
int _cpu; // CPU
double _size; // 尺寸
int _color; // 颜色
}
// 行为
// OC中的行为 和 C语言中的函数一样, 都是用来保存一段特定功能的代码
// C语言中定义一个函数, 分为声明和实现 , 声明写在.h中, 实现写在.c中
// OC中定义一个方法, 也分为声明和实现, 声明写在interface中, 实现写在@implmentation中
// C语言的函数分两种 : 内部函数和外部函数
// OC中的方法也分为两种; 类方法和对象方法
// 类方法职能用类名调用, 对象方法职能用对象调用
// OC中的类方法用 + 表示, OC中的对象方法用 - 表示
// 编写C语言函数的规律: 1.确定函数名称 2.确定形参 3.确定返回值 4.确定返回值类型
// 编写OC方法也有规律, 规律和C语言一模一样
// C语言函数
//void about()
//{
// printf("model = cpu = size = color");
//}
#warning oc方法 声明
// OC 方法
// 注意: OC中的方法, 如果没有形参不需要写(), 而是直接写一个;
// 为什么OC没有形参不需要写()呢? 因为OC方法中的()有特殊的用途,OC方法中的() 是用来 扩住数据类型的
-(void)about;
// C语言的函数:
// 没有返回值 没有参数的
// 有才返回值 没参数的
// 有返回值 有参数
// 没有返回值 有参数
// 有返回值没有参数: 请读取短信
- (char *)loadMessage;
// 有返回值有参数的, 打电话
// int singnal(int number);
// 注意: OC中的方法如果有参数,那么每个参数的数据类型前面必须加上一个
// 注意: 当前这个有参数的方法名称是:singnal
// 冒号也是方法名称的一部分
- (int)singnal:(int)number;
// 有返回值并且多个参数,发短信
// int sendMessage(int number, char *content);
// 下面的方法的名称, sendMessage::
- (int)sendMessage:(int)number : (char *)content;
// 为了提高我们的阅读性,OC方法允许我们给每个参数添加上一个标签, 来说明当前参数的定义
// 注意: 标签也是方法名的一部分
// 方法名 sendMessageWithNumber:andContent:
- (int)sendMessageWithNumber:(int)number andContent: (char *)content;
@end
@implementation IPhone
#warning oc方法 实现
// 行为的实现
-(void)about
{
// 如果在对象方法中想访问该对象的属性, 可以直接写上 _属性名称即可
// NSLog(@"打印本机信息");
NSLog(@"打印本机信息 %f",_model,_cpu,_size,_color);
}
- (char *)loadMessage
{
return "我";
}
int singnal(int number)
{
return 1;
}
- (int)singnal:(int)number
{
NSLog(@"打电话给%i",number);
return 22;
}
- (int)sendMessage:(int)number : (char *)content
{
NSLog(@"发短信 %i,内容 = %s",number,content);
return 33;
}
@end
int main(int argc, const char * argv[])
{
// 通过类创建对象
IPhone *p = [IPhone new];
p->_size = 5.5; //is protected(是 受保护的)
p-> _color = 0;
p->_model = 4;
p->_cpu = 22;
// 获取对象的属性
NSLog(@"size = %f,color = %i,model = %f,cpu = %i",p->_size,p->_color,p->_model,p->_cpu);
// OC中的类 其实 本质就是一个结构体, 所以p这个指针 其实就是指向了一个结构体
// 如何给对象发消息 (如何调用对象方法)
[p about];
// 注意: OC中的NSLog对C语言的字符串支持不是很好,如果返回的中文的C语言字符串 可能编译出现的乱码,也有可能什么都不输出
char *content = [p loadMessage];
NSLog(@"conteent = %s",content);
[p singnal:1234];
[p sendMessage:1332918282 :"luck"];
return 0;
}