iOS APP 开发 OC 第十九天,@property

tags: OC 30 day

@property参数

@property可以带参数的
@proporty(参数1,参数2,参数3...)数据类型 名称;

@property 的四组参数

与多线程相关的两个参数

atomic,nonatomic

与生成setter方法的实现相关参数

assign,retain

与生成只读,读写相关的参数

readonly,readwrite

是与生成的getter setter方法名字相关的参数

getter setter

多线程相关的参数

atomic:默认值。如果写atomic,这个时候生成的setter方法的代码就会被加上一把现成安全锁。特点:安全,效率较差。
nonatomic:如果写nonatomic 这个时候生成的setter方法的代码就不会加县城安全锁。特点:不安全,效率高。

建议:要效率,最好使用nonatomic。

setter方法实现相关参数

assign:默认值,生成setter方法的实现就是直接赋值。
retain:生成的setter方法的实现就是标准的MRC内存管理代码。也就是先判断新旧对象是否为同一个对象。如果不是release旧的 retain 新的。

当属性的类型是OC对象类型的时候,那麽就使用retain。
当属性的类型是非OC对象的时候,使用assign。

retain参数,只是生成标准的setter方法为标准的MRC内存管理代码,不会自动地在dealloc中生成release的代码。所以,我们还要手动的在dealloc中release。

与生成只读 读写封装

readwriter:默认值,代表同时生成getter setter
readonly:只会生成getter 不会生成setter

生成getter,setter相关的参数。

默认情况下,@property 生成的getter setter 方法都是最标准的名字。
其实我们可以透过参数来指定@property 生成方法的名字。

getter = getter方法名字 用来指定@property 生成的getter方法的名字。
setter = setter方法名字,用来指定@property生成setter方法的名字,注意setter方法是带参数的,所以要加一个冒号。

修改生成getter setter 方法名字,因为默认下生成的方法名字已经是最标准的名字了。所以一般情况下不要去改。

  1. 无论什麽情况下都不要改setter方法的名字。因为默认情况下生成的名字已经是最标准的了。
  2. 什麽时候修改getter方法的名字。当属性的类型是一个BOOL类型的时候,就修改这个getter的名字以is开头,提高代码的阅读性。

<<:  iOS APP 开发 OC 第十九天,司马光砸缸流出来的不是水,是记忆体。OC记忆体泄漏。

>>:  [资料库] 学习笔记 - 商城交易之上架商品

参赛心得

Golang 参赛心得 最後一天就来讲讲心得吧,这次是我第二次参加铁人赛,抱持着希望自己每年都可以进...

Day-28 手把手的手写辨识模型 0x3:CNN is the end?模型大哉问

快到结尾了,再让笔者水一篇 XDD,今天我们来聊聊 CNN 会不会是深度学习领域的最後呢? CNN...

DAY23 - 自学历程中的支线任务做不完

前言 这次在写铁人赛文章时,进行到第十七天写了一个不是预定内容的小范例 这种情况就好像在玩RPG时,...

ASP.NET Core MVC

什麽是 MVC 分别是 Model, View, Controller, 是一种软件架构, View...

Day 28 - Spring Security (五) JwtAuthenticationProvider

实作 新增依赖 <!-- JWT --> <dependency> <...