目录

  • 一、对象/实例方法与类方法的区别
  • 二、常用类方法
  • 1.C字符串转OC字符串
  • 2.OC字符串拼接
  • 三、常用对象方法
  • 1.字符长度
  • 2.得到指定下标的字符
  • 3.判断2个字符串是否相同
  • 4.比较字符串大小
  • 四、匿名对象


一、对象/实例方法与类方法的区别

OC方法分为两大类:
(1)对象方法/实例方法:创建实例才可以调用
(2)类方法:不需要创建对象就可以调用,只能访问同一个target的类方法(文件夹中复制到同一个包下可使用)

声明:
(1)对象:- (直接访问属性,self调用本类其他方法)
(2)类方法:+ (不需要访问属性,不调用其他方法)

@interface Person:NSObject
{
	NSString *_name;
}
- (void)sayhi;//-对象函数
- (void)run;
+ (void)haha;//+类函数
+ (Person *)Person;
@end

@implementation Person
- (void)sayhi
{
	//对象/实例函数可以直接访问属性
	NSLog(@"hi,我叫%@",_name);
}
- (void)run
{
	//对象/实例函数可以用self调用本类方法
	[self sayhi];
	NSLog(@"我在奔跑");
}

+ (void)haha
{
	//不需要访问属性,不调用其他方法,多用:类方法
	NSLog(@"哈哈哈哈哈哈");
}
@end

调用:
(1)对象:创建对象,对象名调用
(2)类方法:类名直接调用(节约空间,提高效率)

//调用对象/实例函数:实例+实例函数
Person *p111 =[Person new];
[p111 sayhi];
[p111 run];

//调用类方法,类名+类函数
[Person haha];

规范:为一个类提供一个纯净的类同名方法,如下Person方法,类方法调用属性必须实例化一个对象;

@interface Person:NSObject
{
	NSString *_name;
	int age;
}
//+规范:同类名的类函数
+ (Person *)person;
//补充
+ (Person *)personWithName:(NSString *)name andAge:(int)age;
@end

@implementation Person
//同名类方法
+ (Person *)person
{
	//规范
	Person *p1 =[Person new];
	return p1;
}
//带参数的类方法
+ (Person *)personWithName:(NSString *)name andAge:(int)age
{
	Person *p1 =[Person new];
	p1->_name = name;
	p1->_age = age;
	return p1;
}
@end

int main(int argc,const char * argv[])
{
	//等效
	Person *p1 =[Person new];
	Person *p2 =[Person person];
	
	//创建者指定属性时,就为这个类方法带参数
	Person *p3 =[Person personWithName:@"Tom" andAge:19];
	
	return 0;
}

二、常用类方法

1.C字符串转OC字符串

stringWithUTF8String 一般多用在用户输入字符,通常是char类型,转为string类型;

char *str0 = "rose";
NSString *str1 = [NSString stringWithUTF8String:str0];
NSLog(@"str1 = %@",str1);

2.OC字符串拼接

stringWithFormat String拼接使用率100%

int age = 19;
NSString *name=@"Tom";
NSString *str = [NSString stringWithFormat:"大家好,我叫%@,我今年%d岁了",name,age];

NSlog(@"str = %@",str);

三、常用对象方法

1.字符长度

length 返回值:NSUInteger
其实就是unsigned leng得到的数字个数,可以处理中文哦

NSString *str= @"cungudafa";
NSUInteger len = [str length];
NSLog(@"len = %lu",len); //%lu是无符号长整型整数

结果:len = 7

2.得到指定下标的字符

charaterAtIndex 支持中文处理

NSString *str= @"cungudafa";
unichar ch = [str charaterAtIndex:2];//unichar是unsigned short占两个字节,中文可
NSlog(@"ch = %C ",ch);//%C可以显示中文,%c只能显示英文

结果:ch = n

3.判断2个字符串是否相同

isEqualToString

NSString *str1 = @"Tom";
NSString *str2 = @"Tom";
if(str1 == str2)//类型和数据都要相同才相同,存在隐藏危险,不适用
{
	//....
}

if([str1 isEqualToString:str2])
{
	//...
}

4.比较字符串大小

compare:返回值-1,0,1

NSCompariseonResult res = [str1 compare:str2];
//同
int res = [str1 compare:str2];

四、匿名对象

  • 只能使用一次
  • 每次创建都是不同的对象
[Person new]->_name = @"Tom";
[Person new]->_age = 19;

[[Person new] sayhi];

使用场景:
方法会使用到对象,但是其他地方不会再使用这个对象。