Objective-C中的@property用法

news/2024/12/13 12:03:27

声明property的语法为:

@property (参数1,参数2) 类型 名字;

如:

@property(nonatomic,retain) UIWindow *window;  

其中参数主要分为三类:

读写属性: (readwrite/readonly)setter语意:(assign/retain/copy)原子性: (atomicity/nonatomic)

各参数意义如下:

readwrite: 产生settergetter方法

readonly: 只产生简单的getter,没有setter。

assign: 默认类型,setter方法直接赋值,而不进行retain操作

retain: setter方法对参数进行release旧值,再retain新值。

copy: setter方法进行Copy操作,与retain一样

nonatomic: 禁止多线程,变量保护,提高性能

@property的参数:

(1)set 方法内存管理相关的参数

(a)retain:release 旧值,retain 新值(适用于 OC对象类型
(b)assign:直接赋值(默认,适用于非OC对象类型), 常用在 BOOL 、int 等基本数据类型。
(c)copy:release 旧值,copy新值, 常用在 NSString对象

(2)是否要生成 set 方法

(a)readwriter:同时生成set和get方法的声明和实现
(b)readonly:只生成 get的声明和实现

(3)多线程管理

(a)nonatomic:性能高(一般都是使用这个)
(b)atomic:性能低(默认)

(4)set 和 get 方法的名称

(a)setter:决定了 set 方法的名称,一定要加个冒号“:“
(b)getter:决定了 get 方法的名称,不要加冒号

(5)strong 和 weak

(a) strong: 用于一般对象
(b) weak: 用于UI控件

id万能指针

Person *p = [Person new];

相当于:

id p = [Person new];

注意 id 和 p 之间不要再加了,id 中默认就带了。

详情请参考博文:Objective-C中的@property和@synthesize用法


https://dhexx.cn/news/show-2511144.html

相关文章

kafka主要定位日志传输_有赞百亿级日志系统架构设计

一、概述日志是记录系统中各种问题信息的关键,也是一种常见的海量数据。日志平台为集团所有业务系统提供日志采集、消费、分析、存储、索引和查询的一站式日志服务。主要为了解决日志分散不方便查看、日志搜索操作复杂且效率低、业务异常无法及时发现等等问题。随着…

Android的活动周期

为什么80%的码农都做不了架构师?>>> 活动的生命周期对任何 Android 开发者来说都非常重要,当你深入理解活动的生命 周期之后,就可以写出更加连贯流畅的程序,并在如何合理管理应用资源方面,你会发挥的 游刃有余。 1.返回栈 ,Android 中的活动…

vcm驱动芯片原理_技术科普 | 一文了解音圈马达的驱动原理

原标题:技术科普 | 一文了解音圈马达的驱动原理第11期庄子云: “鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几千里也,怒而飞,其翼若垂天之云。”大鹏鸟展翅高飞借助的是风带来的…

android 没有asset_Mapbox:Android端支持本地离线Mbtiles了

写在前面的话哈哈,终于做了一次标题党!giser小伙伴们是不是也像我一样朝思慕想这个功能的出世呢?可惜Mapbox团队只是增加了缓存机制,对此仍未支持。虽说有对本地离散文件瓦片的支持,可面对瓦片数量时,你懂的…

JSTL select和checkbox的用法

select的 用法 <select id"roleIds" name"roleIds" multiple"true" background:#000000 value"${roleIds}" style"width:150px" cssClass"SelectStyle" > <c:forEach items"${roleList}"…

ssh mysql 命令_ssh mysql命令大全

启动&#xff1a;net start mySql;进入&#xff1a;mysql -u root -p/mysql -h localhost -u root -p databaseName;列出数据库&#xff1a;show databases;选择数据库&#xff1a;use databaseName;列出表格&#xff1a;show tables&#xff1b;显示表格列的属性&#xff1a;s…

jdbc 变量 mysql_JDBC的使用(MySQL数据库)

一、MySQL数据库安装与数据库连接驱动程序设置配置系统环境变量&#xff0c;CLASSPATH变量&#xff1a;D:\Java\安装包\mysql-connector-java-5.1.7-bin.jar (即驱动程序路径)。二、连接MySQL数据库通过Connection接口完成&#xff0c;具有连接数据库和控制数据源的作用。1.通…

27.怎样在Swift中声明typedef?

在OC中&#xff0c;我们经常会用typedef关键字来声明Block&#xff0c;例如&#xff1a; /*** 通用的空闭包类型&#xff0c;无参数&#xff0c;无返回值*/ typedef void (^GofVoidBlock)(void); 在Swift中&#xff0c;typedef关键字替换成了typealias。实际项目开发中&#xf…

一些书签

安全学长 http://burningcodes.net/ 吾爱破解 http://www.52pojie.cn/ 黑客竞技 http://iscc.isclab.org.cn/ 某大学的教程 http://210.47.0.108:8080/isy/sy/ 软院 http://mis.sse.ustc.edu.cn/ 研究生信息平台 http://yjs.ustc.edu.cn/转载于:https://www.cnblogs.com/ailx10…

mysql8.0.15调优_MySQL · 8.0版本更新 · 性能优化篇-阿里云开发者社区

本文主要总结下MySQL在8.0版本和性能相关的一些改动&#xff0c;随着新的小版本的发布&#xff0c;本文将不断进行更新&#xff0c;直到正式GA。|已更新版本|| MySQL 8.0.0MySQL 8.0.0这个问题最早是facebook的工程师Domas报的一个bug&#xff0c;InnoDB使用多线程来进行Undo P…