框架的定义:
由一堆类,方法,函数,文档等有序的结合在一起
NSString介绍及基本使用:
一般成NSString为字符串的类.
//writeTofile 的方法
- // str writeToFile:@"文件的路径" atomically:原子性(YES/NO) encoding:NSUTF8StringEncoding error:nil
//把NSString 字符串保存到文件中
NSString *str = @"zhangsanfeng";
//文本编码:
// 中文: GBK GB2312
// 2 2
// UTF-8 :国际通用编码
// 3
//writeTofile 的方法
// str writeToFile:@"文件的路径" atomically:原子性(YES/NO)encoding:NSUTF8StringEncoding error:nil
//错误对象
NSError *err;
[str writeToFile:@"/Users/zhaoxiaohu/Desktop/" atomically:YES encoding:NSUTF8StringEncoding error:&err];
//writeToFile 方法,如果写入文件成功,err == nil
//err != nil
if (err != nil) {
NSLog(@"写入失败!,%@",err);
}else{
NSLog(@"写入成功");
}
}
NSError *err;
// NSString *str =[NSString stringWithContentsOfFile:@"待读取的文件的路径"encoding:NSUTF8StringEncoding(编码)error:&err(有没有错误)]
if (err != nil) {
NSLog(@"读取失败!,%@",err);
}else{
NSLog(@"读取成功");
NSLog(@"%@",str);
}
}
return 0;
}
NSString字符串比较
字符串比较函数
#import <Foundation/Foundation.h>
void test(){
NSString *str1 = @"abc"; // a 97
NSString *str2 = @"abc"; // A 65
//取出每个字符的ASCII码值 ,比较ASCII码值大小
//compare方法比较大小
//compare 默认的区分大小写的
//compare 这个函数,不能增加条件
// NSComparisonResult result = [str1 compare:str2];
//比较的时候,不区分大小写,参考字符的个数
NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];
//
switch (result) {
case NSOrderedAscending:
NSLog(@"str1 < str2 升序");
break;
case NSOrderedDescending:
NSLog(@"str1 > str2 降序");
break;
case NSOrderedSame:
NSLog(@"str1 == str2 ");
break;
default:
break;
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString *str1 = @"abc"; // a 97
NSString *str2 = @"abc"; // A 65
NSString *str3 = [NSString stringWithFormat:@"Abc"];
//地址的比较
//"==" 不能够判断字符串是否相等的
//判断字符串内容真正是否相等,使用是
//isEqualToString:
//注意:他是区分大小写的
if ([str1 isEqualToString:str3]) {
NSLog(@"相等");
}else{
NSLog(@"不相等");
}
}
return 0;
}
显示日期:
//创建一个日期时间对象
//获取当前时间
NSDate *d1 = [NSDate date];
//0时区时间,北京 东8区
// 当前时间上+8小时,得到的就是现在时间
NSLog(@"%@",d1);
//2015-05-07 09:00:25+0000
//格式化日期
//NSDateFormatter 日期格式化
//2015年05月07日 17:00:25
//2015-05-07 17:00:25
NSDateFormatter *formatter = [NSDateFormatter new];
//设置日期的显示格式的
// yyyy 表示四位的年份
// MM 表示2位的月份
// dd 表示2位的天数
// HH 表示24小时制得小数 hh - 12小时值
// mm 表示2位的分钟数
// ss 表示2位的秒数
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
formatter.dateFormat = @"yyyy-MM-ddHH:mm:ss";
//格式化日期
NSString *dateStr =[formatter stringFromDate:d1];
NSLog(@"%@",dateStr);
计算日期
NSDateFormatter *formatter = [NSDateFormatter new];
//设置日期的显示格式的
// yyyy 表示四位的年份
// MM 表示2位的月份
// dd 表示2位的天数
// HH 表示24小时制得小数 hh - 12小时值
// mm 表示2位的分钟数
// ss 表示2位的秒数
formatter.dateFormat = @"yyyy年MM月dd日 HH:mm:ss";
formatter.dateFormat = @"yyyy-MM-ddHH:mm:ss";
//计算明天的此刻
// 距现在时间 24 小时以后,明天的此刻
NSTimeInterval t = 60*60*24;
NSDate *tom = [NSDate dateWithTimeIntervalSinceNow:t];
NSDate *zuotian = [NSDate dateWithTimeIntervalSinceNow:-t];
//格式化显示时间
NSString *timeStr =[formatter stringFromDate:zuotian];
NSLog(@"timeStr = %@",timeStr);
//计算昨天的时间
NSDate *now = [NSDate date];
//当前时间-24小时的秒数
NSDate *zt = [now addTimeInterval:-t];
timeStr =[formatter stringFromDate:zt];
NSLog(@"zt = %@",zt);
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//日期对象
//2015-05-0717:00:25
//yearmonth day
//NSCalendar 日期类,可以帮我们快速的获取年月日 时分秒信息
NSDate *d = [NSDate date];
//重点
//创建日期的对象
NSCalendar *cal = [NSCalendar currentCalendar];
// cal components:获取日期的哪些部分 fromDate:日期对象
NSDateComponents *coms = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:d];
NSLog(@"year:%ld,month:%ld,day:%ld",coms.year,coms.month,coms.day);
集合对象内存管理
//创建对象
Person *p = [Person new]; //1
[p retain]; //2
//定义一个数组,并且把p放到数组中
// 规律1:
// 只要把对象放到数组中,就发现对象的引用计数+1
// NSArray *arr = [NSArray arrayWithObject:p];
// [[[self alloc] init]autorelease];
NSMutableArray *marr = [NSMutableArray array];
[marr addObject:p];
NSLog(@"p.retainCount = %lu",p.retainCount); //3
[p release]; // 2
// 规律2:
// 数组在销毁的时候,对对象发送了一次release消息
// 销毁的顺序:数组先挂 --> 数组向其中的对象也发送release
// 结论:
// 1) 当对象被添加到数组中的时候,对象的引用计数+1
// 2) 当数组销毁的时候,数组会向它其中的元素发送一次release消息
// 注意: 数组被销毁了,它里面存储的对象不一定被销毁
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建对象
Person *p = [Person new]; //1
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObject:p]; //2
// [arr addObject:p];
//如果对象从数组中移除了,对象的引用计数会被-1
[arr removeObject:p]; //-1
NSLog(@"%lu",p.retainCount);
[arr release]; //1
[p release]; // 1
//数组被销毁了