OC中NSString类的基本方法和类方法的调用
一、NSString类的常见用法
1、NSString是处理字符串的类,可用来创建常量字符串,注意@的使用
NSString *str = @"This is a string!";
2、NSString是一个类,可以用来创建一个NSString对象
NSString *str = [NSString new];
str = @"thigggfhfg";
3、以格式化的方式创建字符串
NSString *str1 = [NSString stringWithFormat: @ "这是%d次以格式化方式创建字符串 " ,i ];
4、用一个已经存在的字符串创建一个新的字符串
NSString *str4 =[ [ NSString alloc ] initWithString:str];
二、NSString字符串长度的计算
通过调用NSString类的对象方法 length 可以获得字符串的长度
1、纯英文字符
NSString *str = @"HeiMa";
int len = [str length];
此处不包含\0
在C语言中使用的是strlen函数,例如:char *s = "abccf"; int l = strlen(s);此处也是不包含\0
2、纯中文的字符串
在OC当中中文的一个汉字占用1个字节,而在C语言中一个汉字占用3个字节
三、类方法
类方法:如果一个方法中不需要使用任何成员变量,那么该方法将声明为类方法
//
// main.m
// 类方法
//
// Created by YuHongpeng on 15/11/6.
// Copyright (c) 2015年 YuHongpeng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Caculator2:NSObject
-(int)add:(int) num1 andnum2:(int) num2;
-(int)jian:(int) num1 andnum2:(int) num2;
-(int)cheng:(int) num1 andnum2:(int) num2;
-(int)chu:(int) num1 andnum2:(int) num2;
+(int)add:(int) num1 andnum2:(int) num2;
+(int)jian:(int) num1 andnum2:(int) num2;
+(int)cheng:(int) num1 andnum2:(int) num2;
+(int)chu:(int) num1 andnum2:(int) num2;
@end
//类的实现
@implementation Caculator2
-(int)add:(int) num1 andnum2:(int) num2{
return num1 + num2;
}
-(int)jian:(int) num1 andnum2:(int) num2{
return num1 - num2;
}
-(int)cheng:(int) num1 andnum2:(int) num2{
return num1 * num2;
}
-(float)chu:(int) num1 andnum2:(int) num2{
return num1 /(float) num2;
}
//类方法定义
+(int)add:(int) num1 andnum2:(int) num2{
return num1 + num2;
}
+(int)jian:(int) num1 andnum2:(int) num2{
return num1 - num2;
}
+(int)cheng:(int) num1 andnum2:(int) num2{
return num1 * num2;
}
+(float)chu:(int) num1 andnum2:(int) num2{
return num1 /(float) num2;
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
//类方法实现计算器
//创建一个对象
Caculator2 *ca = [Caculator2 new];
//调用对象方法
int result = [ca add:23 andnum2:10];
//调用类方法
int result1 = [Caculator2 add:23 andnum2:10];
NSLog(@"结果为:%d %d",result,result1);
}
return 0;
}
四、类方法使用注意事项
1,、类方法可以和对象(实例)方法同名
2、类方法也可以从父类继承而来,子类可以重写类方法
3、类方法只能通过类调用
4、在类方法中使用了self,这个self指的就是当前类
5、类方法中不能访问成员变量,因为类方法由类调用,没有 new,就在堆区中没有分配存储空间来寸储类中的成员变量
五、匿名类的使用
匿名类的使用实际上是匿名对象的使用
1、匿名类只正确访问一次实例成员变量,以后再次访问时实际上是访问了新空间,因为每次new 的时候就会创建新的空间
2、使用匿名的类、可以调用方法,因为只出现了一次 new
3、匿名类可以调用方法也可以做为方法的参数使用