iOS基础总结_用法

1、plist读写array示例

#pragma 保存数据到plist
- (IBAction)addplist:(id)sender {
    NSArray *data = @[@"aaa",@"bbb",@"ccc"];
    BOOL result = [data writeToFile:@"/Users/xc/Desktop/a.plist" atomically:YES];
    NSLog(@"保存数据到plist: %d",result);
}

#pragma 从plist读取数据
- (IBAction)getplist:(id)sender {
    NSArray *data = [NSArray arrayWithContentsOfFile:@"/Users/xc/Desktop/a.plist"];
    NSLog(@"从plist读取数据: %@",data);
}

2、@synchronized和dispatch_once

实现单例,可使用@synchronized或者dispatch_once,例如:
static id obj = nil;
+(instancetype)shareInstance
{
    @synchronized(self) {
        if (!obj) {
            obj = [[SingletonObj alloc] init];
        }
    }
    return obj;
}


static id obj = nil;
+(instancetype)shareInstance
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        obj = [[SingletonObj alloc] init];
    });
    return obj;
}

区别:
dispatch_once方法的性能要明显优于synchronized方法;
@synchronized采用的是递归互斥锁来实现线程安全,而dispatch_once的内部则使用了很多原子操作来替代锁,以及通过信号量来实现线程同步

3、instancetype与id

相同点:都可作为返回值
不同点:
1、instancetype 可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象
2、instancetype只能作为返回值,id可以作为参数

4、依赖数据库sqlite3

libsqlite3.0.tbd、 libsqlite3tbd区别:
libsqlite3.0.tbd 只是一个快捷方式,其实也是指向libsqlite3.tbd的,如果libsqlite3.0.tbd指向的就是最新的libsqlite3.tbd,就不用更新了

5、多工程依赖 oc版

一个workspace下有多个工程,依赖方式:
1、配置Build Phases --> Link Binary With Libraries,添加其他工程依赖;
2、配置Build Setting --> Header Search Paths,双击右侧,弹出面板,鼠标拖入包含头文件的工程目录;

6、多工程依赖 swift版

一个workspace下有多个工程,依赖方式:
1、配置Build Phases --> Link Binary With Libraries,添加其他工程依赖;
2、swift文件中引入依赖工程即可,如被依赖工程为testdao,引入写法:import testdao

你可能感兴趣的:(iOS基础总结_用法)