一、概念
二、代码
#import <Foundation/Foundation.h>
#pragma mark 类
@interface IPhone : NSObject
{
@public
float _model; // 型号
int _cpu; // cpu
double _size; // 尺寸
int _color; // 颜色
}
-(void)about;
-(char *)loadMessage;
-(int) signal:(int)number;
- (int)sendMessageWithNumber:(int)number andContent:(char *)content;
// 计算器
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
// 如果你不想每次使用方法 都需要创建对象存储空间
// 并且如果该方法中 没有使用到属性(成员变量),那么你可以把这个方法定义为类方法
// 对象方法 用对象调用 类方法用类调用
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2;
#pragma mark 1.类方法
// 如何定义类方法,类方法的写法 和 对象方法一模一样, 除了前面的-号 不同以外
// 只需要将对象方法的 -号 换成 + , 那么就定义了一个类方法
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
+(void)demo;
@end
#pragma mark 实现
@implementation IPhone
-(void)about
{
NSLog(@"sum = %i",[IPhone sumWithValue1:30 andValue2:30]);
NSLog(@"型号 = %f cpu = %i,尺寸 = %f, 颜色 =%i",_model,_cpu,_size,_color);
// IPhone *p = [IPhone new];
// char *content = [p loadMessage];
// NSLog(@"loadMessage %s",content);
NSLog(@"loadMessage %s",[self loadMessage]);
}
-(char *)loadMessage
{
char *content = "老婆我们家我做主";
return "lyh is cool";
}
-(int) signal:(int)number
{
NSLog(@"打电话 %i",number);
return 1;
}
- (int)sendMessageWithNumber:(int)number andContent:(char *)content
{
NSLog(@"发短息 %i, 内容: %s",number,content);
return 1;
}
//-(int)sumWithValue1:(int)v1 andValue2:(int)v2
/*
注意 :如果声明的是对象方法 那么必须实现对象方法
如果声明的是类方法 那么就必须实现类方法
类方法 和 对象方法的区别
0.对象方法 以 - 开头
类方法 以 + 开头
1.对象方法 必须对象调用
类方法 必须用类调用
2.对象方法中 可以直接访问属性(成员变量)
类方法 不可以 直接访问属性(成员变量)
3.类方法的优点, 调用类方法的效率会比 调用对象方法高
4.类方法 和 对象方法可以进行相互调用
4.1 对象方法中 可以直接调用类方法
4.2 可以在类方法中 间接 调用对象方法 (注意 : 不建议这样使用)
4.3 类方法可 以直接调用 其他类方法
4.4 对象方法 可以直接调用 对象方法
类方法的应用场景
如果方法中没有使用到属性 (成员变量), 那么能用类方法 就用类方法
类方法的执行效率 比 对象方法高
类方法 一般用于定义 工具方法
字符串查找
文件操作
数据库操作
*/
+(int)sumWithValue1:(int)v1 andValue2:(int)v2;
{
// NSLog(@"型号 = %f cpu = %i,尺寸 = %f, 颜色 =%i",_model,_cpu,_size,_color); // instance variable '_color' accessed in class method
IPhone *p = [IPhone new];
[p signal:123]; // 注意 : 在企业开发中, 不建议这样使用
return v1 + v2;
}
+(void)demo
{
[IPhone sumWithValue1:30 andValue2:40];
NSLog(@"demo");
}
@end
#pragma mark main函数
void text();
int main(int argc, const char * argv[])
{
/*
IPhone *p = [IPhone new];
p->_model = 4;
p->_size = 3.5;
p->_color = 0;
p->_cpu = 1;
[p about];
char *content = [p loadMessage];
NSLog(@"content %s",content);
[p signal:10010];
[p sendMessageWithNumber:10010 andContent:"hehe"];
// int res = [p sumWithValue1:10 andValue2:20];
int res = [IPhone sumWithValue1:20 andValue2:20];
NSLog(@"res = %i",res);
*/
// [IPhone loadMessage];
IPhone *p = [IPhone new];
// int res = [p sumWithValue1:10 andValue2:20]; // No visble @interface for 'IPhone' declares the selector 'sumWithValue1:andValue2:'
[p about];
// [IPhone demo];
return 0;
}
void text()
{
// 1.创建对象
IPhone *p1 = [IPhone new];
// 2.利用对象 调用加法运算方法
// int res = [p1 sumWithValue1:10 andValue2:20];
int res = [IPhone sumWithValue1:10 andValue2:20];
NSLog(@"res = %i",res);
}
输入图片说明
输入图片说明
输入图片说明