【iOS 开发基础学习 四】

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];

注意:

  1. 私有方法需要自定义,在.m方法中实现,不在.h中声明:即是oc中约定的私有方法

猜你喜欢

转载自blog.csdn.net/sinat_30220049/article/details/106624556
今日推荐