单例是一种设计模式——— 单例方法是+方法 ——— 通常以default或者share开头
一个类只创建一个对象,并且不释放,这个对象就叫做单例
作用: 共享数据,控制,降低性能的消耗
单例的应用场景:
1.废纸篓
2.网页计数器
3.音乐播放器
4.任务管理器
协议
//专门用来规定方法的
//作用:统一接口
//对比:
//继承统一接口: 子类继承父类,所以所有的子类接口都被统一化,范畴比较小,子类可以不用重写方法,子类还可以添加属性和方法.
//协议统一接口: 类与类之间没有联系,范畴比较大,因为是id类型,每一个类都需要自己实现方法,不能定义属性
NSRunLoop的主要作用:控制NSRunloop里面线程的执行和休眠,在有事情做的时候使当前NSRunLoop控制的线程工作,没有事情做让当前NSRunLoop的控制的线程休眠。
stringByAppendingPathComponent是添加/号,使之变成一个完整的路径
NSString * str=@“tmp”;
str=[ str stringByAppendingPathComponent:@”hello.png”];
str就变成 tmp/hello.png了
如果是stringByAppendingPathExtension 是加后缀的意思
str=[str stringByAppendingPathExtension:@”jpg”];
str就是 str.jpg
序列化与反序列化存储文件与读取文件例子
-(void)encodeWithCoder:(NSCoder *)aCoder{
[aCoder encodeObject:self.name forKey:@”name”];
[aCoder encodeObject:self.address forKey:@”adress”];
[aCoder encodeObject:self.number forKey:@”number”];
[aCoder encodeObject:self.company forKey:@”company”];
}
-(id)initWithCoder:(NSCoder *)aDecoder{
if (self = [super init]) {
self.name = [aDecoder decodeObjectForKey:@”name”];
self.address = [aDecoder decodeObjectForKey:@”adress”];
self.number = [aDecoder decodeObjectForKey:@”number”];
self.company = [aDecoder decodeObjectForKey:@”company”];
}
return self;
+(NSMutableArray *)loadPersonInfo{
return [NSKeyedUnarchiver unarchiveObjectWithFile:file];
}
+(void)savePersonInfo:(NSArray *)array{
[NSKeyedArchiver archiveRootObject:array toFile:file];
}
c字符串转oc字符串:
return [[NSString alloc]initWithFormat:@”%s”,ch];
return [[NSString alloc]initWithCString:ch encoding:NSUTF8StringEncoding];
获取文件内容,例如歌词文件内容:
NSString *lrcContent = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
获取字符串指定位置字符:
- (unichar)characterAtIndex:(NSUInteger)index;
例如:获取字符串str第1号位元素:
unichar c = [str characterAtIndex:1]
获取原文件的属性:
NSDictionary *atr = [manager attributesOfItemAtPath:oldPath error:nil];