05 - @property 后面所加的关键词

——数据的存取访问方式:(readonly,readwrite):表示一个属性是可以赋值的还是只读的。默认是readwrite。一个属性只能拥有其中的一种。

——线程安全(atomic,nonatomic):如果给一个属性设定了atomic关键字,那么所有同时访问属性的访问者都会被锁定以保证线程安全;nonatomic关键词不会锁定,并且通常被用在iOS,因为大量的锁定会降低性能;

——存储方式(assign,retain,copy,strong,weak):无向性变量类型默认是assign存储类型,对象默认用retain来增加引用计数器的数值(同样也会因为引用计数器数值改变或者unset来释放);如果一个对象的值支持,你可以使用copy来暗示这个对象可以被全部拷贝,并不仅仅是引用(对可变变量比较有用);strong和weak是跟随ARC随之而来的心得修饰词:前者表示对对象的一种强引用,后者是一种无保零参考。如果这个值被释放,那么这个值的所有属性会被自动的赋值为nil。但一个变量只可以赋值这里面的其中一个。

——方法(getter = ,setter = ):这个可以方便对一个属性的自定义方法进行定义;这个常常被用在BOOL类型的属性上,比如一个hidden属性的setter和getter方法可以是isHidden 和setHidden:.

时间: 2024-08-09 22:03:02

05 - @property 后面所加的关键词的相关文章

魏兆辉的IOS基础学习笔记之十 OC语言基础-05 @property关键字

在上一篇笔记中是学习了怎样手动编写getter和setter方法,相对来说复杂一些,今天学习了@property关键字就可以自动的生成这两个方法,十分方便, 另外在内存管理中,也可以使用这个关键字,省去了重写dealloc函数的麻烦,只需要写进去关键词就可以. 让系统自动合并setter和getter只要两个步骤: (1). 在类接口部分使用@property指令定义属性. (2). 在类实现的部分使用synthesize指令声明该属性即可. 所有,上面例子中定义Engine的存取方法我们可以修

mybatis(三)懒加载

懒加载的好处: 所谓懒加载(lazy)就是延时加载,延迟加载.什么时候用懒加载呢,我只能回答要用懒加载的时候就用懒加载.至于为什么要用懒加载呢,就是当我们要访问的数据量过大时,明显用缓存不太合适,因为内存容量有限 ,为了减少并发量,减少系统资源的消耗,我们让数据在需要的时候才进行加载,这时我们就用到了懒加载.总结为: 1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强,层次感很强. 2> 每个属性的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强

Java 加载配置文件的方式

一 使用原生方式读取配置文件 1 文件系统加载 Java代码 InputStream in = new FileInputStream("config.properties"); Properties p = new Properties(); p.load(in); 2 类加载方式 A 与类同级目录 Java代码 InputStream in = Main.class.getResourceAsStream("config.properties"); B 在类的下

基本数据持久性(二) 使用sqlite保存和读取数据

关于基本数据的持久性,写过一篇文章来简述过(基本数据持久性(一) 使用plist保存和读取数据).这篇文章将简述采用数据库sqlite的方式来保存数据,并根据查询结果读取数据. 一.工作原理 sqlite采用表存储的方式,表的第一行(也就是我们常说的表头)在sqilte中被称为“字段”.对于标的每一行(除了字段)的信息,都有一个独一无二的列内容可以将表的每一行内容独立区分开(例如本文所示的案例,存储一个学生的信息——学号.姓名.年龄.班级.那么,学号这一列就可以将表的每一行内容独立区分开,因为每

控制反转和依赖注入模式(转)

Java社群近来掀起了一阵轻量级容器的热潮,这些容器能够帮助开发者将来自不同项目的组件组装成为一个内聚的应用程序.在它们的背后有着同一个模式,这个模式决定了这些容器进行组件装配的方式.人们用一个大而化之的名字来称呼这个模式:"控制反转"( Inversion of Control,IoC).在本文中,我将深入探索这个模式的工作原理,给它一个更能描述其特点的名字--"依赖注入"(Dependency Injection),并将其与"服务定位器"(S

C++11学习

C++11学习 本章目的: 当Android用ART虚拟机替代Dalvik的时候,为了表示和Dalvik彻底划清界限的决心,Google连ART虚拟机的实现代码都切换到了C++11.C+11的标准规范于2011年2月正式落稿,而此前10余年间,C++正式标准一直是C++98/03[①].相比C++98/03,C++11有了非常多的变化,甚至一度让笔者大呼不认识C++了[②].不过,作为科技行业的从业者,我们要铭记在心的一个铁规就是要拥抱变化.既然我们不认识C++11,那就把它当做一门全新的语言来

html及css小结

1. HTML常用标签 1.1 <meta> META标签是HTML标记HEAD区的一个关键标签,提供文档字符集.使用语言.作者等基本信息,以及对关键词和网页等级的设定等,最大的作用是能够做搜索引擎优化(SEO). 两个主流网站meta属性 <!-- 淘宝 --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,c

day07_雷神_面向对象进阶

day07 1.接口类(抽象类) 接口类和抽象类是一种规范,写代码时的规范. 两个思想: 一个是统一接口,一个是定义规则. 最终版本:接口类,抽象类,是一种规范,写代码时的规范 强制性的规定. from abc import ABCMeta,abstractmethod class Payrole(metaclass=ABCMeta): # 抽象类或者接口类,制定规范,统一方法名. @abstractmethod def pay(self): pass class QQpay(Payrole):

SSH开发环境搭建

断断续续学习hibernate也有一段时间了,在这里研究一下SSH开发环境的搭建过程,自己简单的搭建一个SSH的开发环境.采用maven搭建. 0.项目结构: 1.导包:(maven项目) pom.xml配置文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&