KVC键值编码
- (void)setValue:(nullable id)value forKey:(NSString *)key;
谓词
//创建谓词
+ (NSPredicate *)predicateWithFormat:(NSString *)predicateFormat;
//谓词条件
//1.使 逻辑运算符 && ||
s = [NSString stringWithFormat:@"self.age>%d && self.name='小白'",30];
predicate = [NSPredicate predicateWithFormat:s];
//2.IN (包含)
s = [NSString stringWithFormat:@"name IN {'小白 ','xx','%@'}",@"rose"];
predicate = [NSPredicate predicateWithFormat:s];
//3. 以...开头
s = [NSString stringWithFormat:@"name BEGINSWITH 'r'"];
predicate = [NSPredicate predicateWithFormat:s];
//4. 以...结尾 @"name ENDSWITH 'e'"
//5. 包含 ... 字符 @"name CONTAINS 's'"
//6. like*:任意多个字符 ?:表示任意单个字符
/*
name like *a 以a结尾
name like *a* 字符中包含a的字符
name like ?a* 第2个字符为a的字符串
*/
//[c]不区分大小写
s = [NSString stringWithFormat:@"self like [c] '%@', ];
predicate = [NSPredicate predicateWithFormat:s];
单例设计模式
设计原理
设计原理:始终返回一个实例,即一个类始终只有一个实例
实现
#import "Husband.h"
@implementation Husband
static Husband *instance = nil;
+(Husband *)defaultHusband {
@synchronized(self) {
if(instance == nil){
instance = [[self alloc] init];
}
}
return instance;
}
+(instancetype)allocWithZone:(struct _NSZone *)zone {
@synchronized(self) {
if (instance == nil) {
instance = [super allocWithZone:zone];
}
}
return instance;
}
-(id)copy{
return self;
}
@end