Foundation 框架(一)
- NSObject常用方法
1.performSelector (OC没有私有方法,私有方法声明 文尾注!)
1.[self demo1];
2. perform调用(用来调用私有方法)
//创建了一个方法选择器,表示demo1方法
SEL selector = @selector(demo1) ;
[super|self performelector:selector];
//*带参数的调用,@"wxhl"传给了demo2的参数
[self performSelector:@selector(demo2:)
withObjectL@"wxhl];
3、延迟调用
[self performSelector:@selector(demo1) withObject:nil afterDelay:3.5];
- NSNumber的使用
定义:包装基本数据类型
//1.包装
NSNumber *intNumber = [[NSNumber alloc] initWithInt:i];
NSNumber *longNumber = [[NSNumber alloc] initWithLong:i];
NSNumber *floatNumber = [[NSNumber alloc] initWithFloat:10.5];
NSNumber *boolNumber = [[NSNumber alloc] initWithBool:true];
NSNumber *chatNumber= [[NSNumber alloc] initWithChar:'a'];
//2.解包
int intval = [intNumber intValue];
long longval = [longNumber longValue];
float floatval = [floatNumber floatValue];
BOOL boolval = [boolNumber boolValue];
char chatval = [chatNumber chatValue];
//3.包装的简便语法NSNumber *number = @value;
NSNumber *intNumber = @12;
NSNumber *longNumber = @1000;
NSNumber *floatNumber = @3.14;
NSNumber *boolNumber = @YES;
NSNumber *chatNumber= @'a';
//4.NSValue:NSNumber 的父类 ,用来包装结构体
NSRange
NSValue *rangValue = [NSValue valueWithRange:rang]
...
//5.对自定义结构体封包、解包
struct WXPoint{float x,float y};
struct WXPoint p ={500,100};
//封包
NSValue *value = [NSValue value:p withObjCtType:@encode(struct WXPoint)];
//解包
struct WXPoint p ;
[pointValue getValue:&p];
- NSString的使用
1.通过字符串拼接创建
NSString *str = [[NSString alloc] initWithFormat:@“年龄是:%ld,名字:%@”,age,name];
2.通过类方法创建(与1 内存管理不同)
NSString *str = [NSString stringWithFormat:@“年龄是:%ld,名字:%@”,age,name];
3.字符串比较:内容、大小
NSString *str = @"abc";
NSString *str2 = @"ABC";
//比较内存地址
if(str == str2){}
//内容
[str isEqualToString:str2]
//打印内存地址:%p 字符串常量区 不会创建两个完全相同的字符创(优化内存) 如果是初始化方式创建 会创建在堆区 所以会创建两个不同的内存
(1) 忽略大小写比较 :caseInsensitiveCompare:(NSString *)
(2)不忽略大小写比较:compare
4.字符串的其他方法
(1)长度
NSString *str = @"abcdef";
NSUIntger len = [str length];
(2)返回指定索引的字符
unichat c = [str characterAtIndex:1];
(3)转大小写
NSString *str = @"hEllo";
NSString strUp = [str uppercaseString];
NSString strLow = [str lowercaseString];
(4)首字母大写
[str capitalizedString];
(5)转基本数据类型
NSString *str = @"3.14";
[str floatValue];
5.字符串的截取
NSString *str = @"[email protected]";
[str substringToIndex:0];//从0开始指定位置结束(不包含指定位置)
[str substringFromIndex:];//从指定位置开始到末尾(包含指定位置)
NSRange rang = {0,2};//第一个:指定位置,第二个:截取个数
[str substringWithRange:NSRange];//
6.字符串的追加
NSString *str = @"Android";
[str stringByAppendingString :@"iOS"];
7.字符串查找
NSString *str = @"[email protected]";
NSRange rg = [str rangOfString:@"163.com"];
if(rg.location == NSNotFound){
//未找到该字符串
}
8. 字符串的替换
NSString *str = @"[email protected]";
[str stringByReplacingOccurrencesOfString:@"" wihtString:@""];
9.字符串的分割
NSString *str = @"abc-android-ios";
[str componentsSeparatedByString:@"-"];
10.可变字符串(NSMutableString):修改原有字符串
//NSString 字符串的内容定义以后是不能修改的,是不可变的
//NSMutableString 是可变字符串,可以修改字符串中的内容
//NSMutableString集成自NSString
NSMutableString *ms = [[NSMutableString alloc] initWithString:@""];
NSMutableString *ms = [NSMutableString stringWithFormat:@""];
/**
* 1、插入
* 2、追加
* 3、删除
* 4、替换
*/
1、插入
[ms insertString:@"可变" atIndex:1];
2、追加
[ms appendString:@""];
3、删除
//NSRange rg = NSMakeRange(0,2);
[ms deleteCharactersInRange:[ms rangeOfString:@"可变"]];
4、替换
[ms replacChatactersInRange:[ms rangeOfString:@"可变"] withString:@"牛肉"];
-
数组类的使用
- 数组中只能存放对象类型,不能存放基本数据类型 - 通过下表访问数组中的对象
不可变数组
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//一、创建
1.NSArray *array = [[NSArray alloc] initWithObjects:s1,s2,s3,nil];
NSLog(@"%@",[array description]);
2.NSArray *a1 = [NSArray arrayWithObjects:s1,s2,s3,nil];
3.NSArray *a2 = [NSArray arrayWithObjects:s1];
4.NSArray *a3 = [NSArray arrayWithArray:a1];//创建一个数组,数组中的元素来自另一个元素
//二、取出元素
NSString *s = [a1 objectAtIndex:0];
//三、数组的元素个数
NSUInteger count = [a count];
//四、是否包含某个元素
BOOL isContains = [a containsObject:@"list"];
//五、indexOfObject :查找出一个对象在数组中的下标位置
NSUInteger index = [a indexOfObeject:@"list"];//找不到就是NSNotFound
//六、componentsJoinedByString:使用连接符,拼接数组内的元素
NSString *joinString = [a componentsJoinedBySting:@"---"];
//七、lastObject:访问数组中最后一个元素
[a lastObject];
//八、arrayBuAddingObject:追加
[s arrayBuAddingObject:@"周六"];
//数组的遍历
//1.普通方式
for(int i = 0 ; i < array.count ;i++){
NSString *str = [array objectAtIndex:i];
}
//2.快速遍历
for( NSString *s in array ){
NSLog(@"s = %@" ,s);
}
//数组的另一种语法
//1.数组的创建
NSAarry *array = @[s1,s2,s3];
//2.元素的访问
NSString *s = array[1];
可变数组
NSString *s1 = @"zhangsan";
NSString *s2 = @"lisi";
NSString *s3 = @"wangwu";
//1.创建
NSMutableArray *msa = [[NSMutableArray alloc] initWithObjects:s1,s2,s3,nil];
NSMutableArray *msa = [[NSMutableArray alloc] init];
NSMutableArray *msa = [[NSMutableArray alloc] initWithCapacity:5];
//2.addObject:添加一个元素
[array addObject:object];
//3.addObjectsFromArray:添加addAll
[array addObjectsFromArray:array];
//4.insertObject:object atIndex:0 :插入一个元素
[array insertObject:object atIndex:0];
//5.replaceObjectAtIndex:替换元素
[array replaceObjectAtIndex:1 whitObject:object];
//6.exchangeObjectAtIndex:0 withObjectAtIndex:3 互换两个元素的位置
[array exchangeObjectAtIndex:0 withObjectAtIndex:3];
//7.删除
//(1)根据下表删除
[array removeObjectAtIndex:0];
//(2)删除指定对象
[array removeObjectAtIndex:object];
//(3)删除最后一个元素
[array removeLastObject];
//(4)清空
[array removeAllObjects];
注意:
- 私有方法需要自定义,在.m方法中实现,不在.h中声明:即是oc中约定的私有方法