KVC、谓词、单例设计模式
KVC键值编码
// 通过键值编码方式@private,@ptorected修饰的属性也能访问;
// 按照关键字查找,如果没有,会自动加上下划线'_';
// 子类通过键值编码也拥有了父类的私有属性;
- (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// 定义一个静态的Husband实例
static Husband *instance = nil;+(Husband *)defaultHusband {// 同步,为了多线程下访问安全,保证任何时候只有一个丈夫被初始化@synchronized(self) {// 确保只被初始化一次,如果实例已经被创建,那就不再alloc init;if(instance == nil){instance = [[self alloc] init];}}return instance;
}// 覆写父类的方法,保证Husband调用alloc时只申请一次内存
// alloc方法会调用allocWithZone
// zone是管理内存碎片化的工具,使内存达到最优使用率
+(instancetype)allocWithZone:(struct _NSZone *)zone {@synchronized(self) {if (instance == nil) {instance = [super allocWithZone:zone];}}return instance;
// return nil;
}
// 保证copy产生的对象就是自己
-(id)copy{return self;
}
@end
转载于:https://www.cnblogs.com/Apel0811/p/5588710.html
KVC、谓词、单例设计模式相关推荐
- python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件
1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...
- 单例设计模式详解。。。。。。。。。。。
public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub /* ...
- 对于java程序语言的单例设计模式讲解
1.设计模式:解决某一类问题最行之有效的方法.(java中有23种通用设计模式) 单例设计模式:解决一个类在内存中只存在一个对象. 2.单例设计模式有两种方式: 1)饿汉式 先初始化对象.当类一进内存 ...
- java软件设计模式只单例设计模式
概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...
- AJPFX关于单例设计模式
单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...
- java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...
什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...
- 单例设计模式singleton
简单引入 单例设计模式作为最简单,最常用的设计模式.一般是这两中写法,这两种写法教科书所谓的标准写法,但是实际上存在不少问题.后面介绍标准写法,以规避这些问题. 1.懒汉式: /*** 问题在于,当多 ...
- 面向对象——单例设计模式
单例设计模式: 解决一个类在内存只存在的一个对象 //getInstance() 返回对象 饿汉式:先初始化对象 class Si{ private static Si s=new SI(); ...
- Python单例设计模式
(1)为什么使用设计模式? 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. (2)单例设计模式概念 让类创建的对象只有唯一的一个实例,即每次执行 类名() 返回的对象,内存地 ...
- java的单例设计模式
java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...
最新文章
- mac 中 Mach-O
- 洛谷 P3803 多项式乘法
- Delphi 调用C#编写的WebService
- 如何查找SAP Cloud for Customer UI页面对应的技术模型明细
- NLog日志写文件的一个性能问题
- s5pv210——I2C基础详解、I2C时序详解
- css word-wrap_CSS中分词“ break-all”和“ break-word”的值之间的差异
- 底薪80万挖来一个大公司高管
- linux下c语言 读取文件
- jQuery:自学笔记(3)——操作DOM
- postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
- Anagrams by Stack(进栈出栈问题)
- vb简易计算机的代码,vb的简易计算器代码
- MQTT.fx工具测试mqtt
- POJ 1945 Power Hungry Cows(打表技巧)
- Android开发:引入重复包报错Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDe...’解决方法
- Excel做多元线性回归
- 如何进行网站流量分析(二)
- svn 重新定位版本库
- 哈利波特AR游戏-巫师联盟 深度解析
热门文章
- MySQL 结果集问题(获取不存在表的信息导致的隐藏bug)
- 04. 调用empty而不是检查size()是否为0
- java sessionid_Java SessionKey.getSessionId方法代码示例
- 后台解析数据--form表单get、post方法的使用(如何上传图片到服务器)
- redis数据类型-字符串
- vue中的传参的两种方式
- python网络编程难点_python网络编程
- 修改 linux分区文件,修改分区和EXT4文件系统大小
- Idea:新版本Idea底部工具栏Git中没有Local Changes
- HTML:H5新增表单type属性