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、谓词、单例设计模式相关推荐

  1. python基础知识整理 第七节:单例设计模式、异常、模块、包、制作模块、文件

    1.单例设计模式 单例设计模式就是为对象在内存中分配空间的时候,永远只会返回一个唯一的固定的内存空间.这样就能保证在内存中这个类的对象只有唯一的一份,这个就叫做单例.(为对象分配空间使用的是内置方法_ ...

  2. 单例设计模式详解。。。。。。。。。。。

    public class Demo01 { public static void main(String[] args) { // TODO Auto-generated method stub /* ...

  3. 对于java程序语言的单例设计模式讲解

    1.设计模式:解决某一类问题最行之有效的方法.(java中有23种通用设计模式) 单例设计模式:解决一个类在内存中只存在一个对象. 2.单例设计模式有两种方式: 1)饿汉式 先初始化对象.当类一进内存 ...

  4. java软件设计模式只单例设计模式

    概述 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计 ...

  5. AJPFX关于单例设计模式

    单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...

  6. java饿汉式有啥作用,Java面试 - 什么是单例设计模式,为什么要使用单例设计模式,如何实现单例设计模式(饿汉式和懒汉式)?...

    什么是单例设计模式? 单例设计模式就是一种控制实例化对象个数的设计模式. 为什么要使用单例设计模式? 使用单例设计模式可以节省内存空间,提高性能.因为很多情况下,有些类是不需要重复产生对象的.如果重复 ...

  7. 单例设计模式singleton

    简单引入 单例设计模式作为最简单,最常用的设计模式.一般是这两中写法,这两种写法教科书所谓的标准写法,但是实际上存在不少问题.后面介绍标准写法,以规避这些问题. 1.懒汉式: /*** 问题在于,当多 ...

  8. 面向对象——单例设计模式

    单例设计模式: 解决一个类在内存只存在的一个对象 //getInstance()    返回对象 饿汉式:先初始化对象 class Si{ private static Si s=new SI(); ...

  9. Python单例设计模式

    (1)为什么使用设计模式? 使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. (2)单例设计模式概念 让类创建的对象只有唯一的一个实例,即每次执行  类名() 返回的对象,内存地 ...

  10. java的单例设计模式

    java的单例设计模式包括:饿汉设计模式和懒汉设计模式: 步骤: 1.创建一个对象把他设置为私有的成员变量,保证唯一 2.私有构造方法,防止new一个对象. 3.定义一个公开的静态方法,返回第一步创建 ...

最新文章

  1. mac  中 Mach-O
  2. 洛谷 P3803 多项式乘法
  3. Delphi 调用C#编写的WebService
  4. 如何查找SAP Cloud for Customer UI页面对应的技术模型明细
  5. NLog日志写文件的一个性能问题
  6. s5pv210——I2C基础详解、I2C时序详解
  7. css word-wrap_CSS中分词“ break-all”和“ break-word”的值之间的差异
  8. 底薪80万挖来一个大公司高管
  9. linux下c语言 读取文件
  10. jQuery:自学笔记(3)——操作DOM
  11. postgresql是如何求年龄的_负债累累如何度过难关?她依靠此法三年还清300多万债务!...
  12. Anagrams by Stack(进栈出栈问题)
  13. vb简易计算机的代码,vb的简易计算器代码
  14. MQTT.fx工具测试mqtt
  15. POJ 1945 Power Hungry Cows(打表技巧)
  16. Android开发:引入重复包报错Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDe...’解决方法
  17. Excel做多元线性回归
  18. 如何进行网站流量分析(二)
  19. svn 重新定位版本库
  20. 哈利波特AR游戏-巫师联盟 深度解析

热门文章

  1. MySQL 结果集问题(获取不存在表的信息导致的隐藏bug)
  2. 04. 调用empty而不是检查size()是否为0
  3. java sessionid_Java SessionKey.getSessionId方法代码示例
  4. 后台解析数据--form表单get、post方法的使用(如何上传图片到服务器)
  5. redis数据类型-字符串
  6. vue中的传参的两种方式
  7. python网络编程难点_python网络编程
  8. 修改 linux分区文件,修改分区和EXT4文件系统大小
  9. Idea:新版本Idea底部工具栏Git中没有Local Changes
  10. HTML:H5新增表单type属性