招聘靠谱程序员系列:2 什么情况使用 weak 关键字,相比 assign 有什么不同?

STM32G070xx将Flash页分块方式存储,固定数据块存储,实现一次擦除多次写入 本例程使用STM32G070xx芯片,Flash大小128KB,Flash每页(2048字节)写满后再擦除。操作存储区分为64块,每块32字节,即写满64次擦除一次;标定存储区分为16块,每块128字节,即写满16次擦除一次,每个存储区的块都有各自的头部标记 阅读详情

答:

1、什么情况下使用weak:
a、在ARC中修饰代理
b、使用@IBOutlet连接控件
c、当block会造成循环引用
2、与assign的不同
assign可以用于非对象类型,而weak必须用于对象类型

参考资料:

1、区别
  • a、修饰变量类型的区别
    weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attribute must be of object type”。
    assign 可修饰对象,和基本数据类型。当需要修饰对象类型时,MRC时代使用unsafe_unretained。当然,unsafe_unretained也可能产生野指针,所以它名字是"unsafe_”。

  • b、是否产生野指针的区别
    weak 不会产生野指针问题。因为weak修饰的对象释放后(引用计数器值为0),指针会自动被置nil,之后再向该对象发消息也不会崩溃。 weak是安全的。
    assign 如果修饰对象,会产生野指针问题;如果修饰基本数据类型则是安全的。修饰的对象释放后,指针不会自动被置空,此时向对象发消息会崩溃。

2、相似

都可以修饰对象类型,但是assign修饰对象会存在问题。

3、总结
  • assign 适用于基本数据类型如int,float,struct等值类型,不适用于引用类型。因为值类型会被放入栈中,遵循先进后出原则,由系统负责管理栈内存。而引用类型会被放入堆中,需要我们自己手动管理内存或通过ARC管理。
  • weak 适用于delegate和block等引用类型,不会导致野指针问题,也不会循环引用,非常安全。
RNA-seq分析:Step4(比对) 预处理之后的fastq文件,可以使用HISAT2软件将reads比对至参考基因组上。HISAT2软件将reads比对至参考基因组上的步骤如下:1. 对参考基因组进行建索引。对参考基因组进行预处理,生成索引文件,包括基因组序列的FM索引和SA索引。2. 将原始的reads进行预处理。包括去除接头序列、去除低质量的碱基,以及进行过滤,得到质量较高的、可靠的reads。3. 利用建立的FM索引和SA索引,将处理后的reads与参考基因组进行比对。首先,通过FM索引,快速找到与reads匹配的可能位置; 阅读详情

相关推荐

Homebrew高效升级与国内镜像源配置全攻略

本文详细介绍了如何通过配置国内镜像源(如清华、中科大、阿里云)来高效升级Homebrew,解决国内开发者访问GitHub仓库速度慢的问题。文章提供了从基础配置到永久生效的完整教程,包括常见问题解决和进阶技巧,帮助开发者大幅提升软件包管理效率。

weixin_28835551的博客 416

【object-c基础】object-c基础之二:property,assign,copy,retain,release

例子: @property(nonatomic,retain) NSString *aString; property:属性的定义,相当于C语言的setter和getter方法。 assign:简单的赋值,不更改索引的计数。 copy:建议一个索引计数为1的对象,然后释放旧对象; retain:释放旧对象,将旧对象的值赋予新对象,再增加新对象的索引计数1。 针对具体的数据类型在...

wangxiaohigh 205

微信聊天记录数据库解密实战:从WCDB到sqlcipher4的关键步骤解析

本文详细解析了微信桌面版聊天记录数据库的解密实战过程。通过逆向分析,定位了微信从WCDB框架到sqlcipher4加密的关键步骤,并成功提取了数据库密钥。文章重点介绍了如何通过动态调试、字符串定位等方法,追踪并验证sqlcipher4的加密密钥,最终实现对加密数据库文件的解密操作,为安全研究和数据恢复提供了技术参考。

weixin_29322553的博客 1071

什么情况使用weak关键字,相比assign有什么不同?

使用 weak 的情形 在 ARC中,有可能出现循环引用的问题,这时候解决方案就是让其中一端使用weak来解决,比如delegate代理属性。 自身已经对它进行了一次强引用了,没必要再强引用一次,这时候也会使用weak。 与assign的区别 assign可以用于非OC对象,而weak必须用于OC对象。 weak表明该属性定义了一种“非拥有关系”,为这种属性设置新值时,设置方法既不保留新值,也不释放旧值,当属性所指的对象销毁时,属性值会自动清空(nil); 而assign当设置方法只会针对“纯量类型”

田一一 664

华为OD机试真题 - 矩阵匹配 牛客网

2024华为OD机试真题,代码包含语言java、js、python、c 代码基本都有详细注释。 题目描述 从一个 N * M(N ≤ M)的矩阵中选出 N 个数,任意两个数字不能在同一行或同一列,求选出来的 N 个数中第 K 大的数字的最小值是多少。 输入描述 输入矩阵要求:1 ≤ K ≤ N ≤ M ≤ 150 输入格式: N M K N*M矩阵 输出描述 N*M 的矩阵中可以选出 M! / N! 种组合数组,每个组合数组种第 K 大的数中的最小值。无需考虑重复数字,直接取字典排序结果即可。

2301_76543445的博客 497

【数字IC设计】Centos 7桌面版 安装Synopsys EDA Tools

简称DC,是Synopsys公司用于做电路综合的核心工具,可以将HDL描述的电路转换为基于工艺库的门级网表。

qiumingT的博客 9793

object-c中的assign retain copy

@property(nonatomic,assign) NSString *name; 那么编译器会生成,相应的get,set方法,类似如下:   - (NSString *) name{     return name; }   - (void)setName:(NSString *)theName{     name=th

南瓜饼 782

sentaurus学习笔记(HFET_pGate_GaN仿真)(五)

`(sdedr:define-constant-profile`和`(sdedr:define-constant-profile-region`命令用于定义并应用一个恒定的活性硼掺杂浓度剖面`"ndop_GaN_gate_const"`到氮化镓栅极层上,其值为`NpGaN_gate`。- `"Oxide"`指定了这一层的材料名称(在这里代表氧化层),而`"nucleation"`是这一层在仿真中的标识名称。- `"GaN"`指定了这一层的材料名称,而`"GaN_gate"`是这一层在仿真中的标识名称。

qq_52640792的博客 940

ObjectC中assign,retain,copy之间的区别

assign-简单赋值,不更改索引计数。使用对象:基础数据类型,NSInteger,int,float,char。 retian-该属性赋值的时候,先release之前的值,然后再赋值给属性,引用计数加1.(指针拷贝,地址相同,内容相同) copy-前一个值发送一条release消息,基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。(内容拷贝) *copy是创建新的对象,...

寻止戈桥 802

3.4 ISIS和OSPF之间路由引入

通过以上输出可以看到OSPF的路由引入到了IS-IS中。通过以上输出可以看到ISIS的路由没有传递给OSPF。通过以上输出可以看到OSPF的路由没有传递给ISIS。通过以上输出可以看到ISIS的路由被引入进了OSPF。掌握在IS-IS中引入OSPF路由的方法。掌握在OSPF中引入IS-IS路由的方法。图3-3:ISIS和OSPF之间路由引入。在R3上把ISIS的路由引入到OSPF。OSPF引入外部路由的缺省度量值为1。在R3上把OSPF的路由引入到ISIS。引入的外部路由类型为Type2。

lwljh134的博客 1802

Android功耗系列专题理论之二十一:Power Monitor测功耗详细说明和注意事项

本文详细介绍了PowerMonitor手机功耗测试仪的功能与使用方法。该设备通过硬件连接替代手机电池,实时监测电流、电压等参数,适用于研发测试、软件优化等场景。文章包含设备接线说明(电源、USB、手机供电等接口)、驱动安装步骤及常见问题排查,并详细讲解了功耗测量操作流程,包括电压设置、开机步骤、数据采集与导出方法。特别强调了测量注意事项,如固定屏幕亮度、关闭后台应用、确保稳定连接等,以确保测试数据准确性。最后提供了简易测量步骤和详细测量流程指导。

595

IOS-36-Object-C语法之属性关键字的使用(assign/weak/strong/copy)

一、 assign 用于 ‘基本数据类型’、‘枚举’、‘结构体’ 等非OC对象类型 eg:int、bool等 二、 weak 一般应用: UI控件 详细说明: 为什么建议UI控件一般使用weak?首先我们从controller来看,controller是被系统用强指针引用着,所以如果 controller 还存在,里面的子控件也会存在,那么controller 强引

IOT_LI的专栏 2978

从 SM59 到 SPROXY,打通 ABAP 后端与 ES Repository 的代理生成链路

本文探讨了在SAP PI/PO项目中配置ABAP后端系统与ES Repository连接的关键步骤,重点解决ABAP Proxy生成时无法获取接口模型的问题。文章指出: 该配置本质是建立设计时通道,使ABAP系统能通过SPROXY访问ES Repository中的接口模型并生成代理类 配置核心是在SM59创建名为SAP_PROXY_ESR的HTTP连接(类型G),需确保: 目标路径为/rep 使用具备SAP_XI_IS_SERV_USER角色的服务账号 连接测试通过后仍需在SPROXY中验证完整功能 常见陷

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 57

《招聘一个靠谱的iOS》面试题参考答案(上)

来自:《招聘一个靠谱的 iOS》—参考答案(上) 2. 什么情况使用 weak 关键字,相比 assign 有什么不同? 什么情况使用 weak 关键字? 在 ARC 中,在有可能出现循环引用的地方,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性。 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak。自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。在下文也有论述:***《IBOutlet连出来的视图属性为什么

univer2012的博客 1080

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

招聘一个靠谱的程序员系列,持续更新中......

招聘靠谱程序员系列:1 代码风格优化与纠错 招聘靠谱程序员系列:2 什么情况使用 weak 关键字,相比 assign 有什么不同? 招聘靠谱程序员系列:3 怎么用 copy 关键字? 招聘靠谱程序员系列:4 这个写法会出什么问题: @property (copy) NSMutableArray *array 招聘靠谱程序员系列:5 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字...

weixin_34309435的博客 230

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

整理 《招聘一个靠谱的iOS》面试题部分参考答案

由于觉得原文说的太繁琐,继而删减了一部分,整理出一份感觉适合自己的、较为清爽的文。(更新ing。。。)

ybcy0612的博客 618

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

retain、strong、weak、assign区别

在网上看到一个解释weak和strong的例子,感觉挺形象的,如下: 一、weak和strong的区别 (weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。   一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。   可能有个例子形容是妥当的。   想象我们的对象是一

Sunny_212319 669

ios中@property的属性

@property声明的变量可以在外部访问 (nonatomic, copy, assign , weak) weak 只可以修饰对象。如果修饰基本数据类型,编译器会报错-“Property with ‘weak’ attribute must be of object type”。 assign 可修饰对象,和基本数据类型。assign 如果修饰对象,会产生野指针问题;如果修饰基本数据类型则是安...

DingDong-IT 338

assign 可以修饰对象吗

assign 可以修饰对象的,由于assign 修饰的对象不是强引用,在调用的时候会操作对象已经释放,也就是野指针,但是assign修饰的对象的属性当对象释放属性不会被设置为nil,如果是strong类型的当对象释放的时候属性就设置成nil   @interface AssignObj : NSObject @property (nonatomic,assign,readwrite) NSI...

王铁涛技术博客 2134

assign与weak的区别

1.assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针!2.weak只对对象类型时使用。assign只对基础数据类型时使用 转载于:https://www.cnblogs.com/fucw/p/6651084.html...

weixin_30660027的博客 153

weak 和 assign 的区别!!!

1.修饰变量的区别: (1)weak 只可以修饰对象,如果修饰基本数据类型,则编译器报一下错误。 (2) assign 既可以修饰对象,也可以修饰基本数据类型。 2.是否产生野指针区别: (1)weak 不会产生野指针问题,因为 weak 修饰的对象释放后(引用计数器值为0),指针会自动被置nil,之后再向该对象发消息也不会崩溃,所以 weak 是安全的。 (2)assign 如果修饰对...

weixin_30700977的博客 188

weak和assign的区别

1.weak: (1).在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性。 (2).如果自身已经对它进行一次强引用,没有必要再强引用一次时也会使用 weak 。比如:自定义 IBOutlet 控件属性一般也使用 weak ,当然也可以使用 strong 。 2.assign: 用于基础数据类型(例

zyk5219的博客 1077

iOS开发之weak和assign的区别

iOS开发之weak和assign的区别

xuweibo的博客 997

property修饰符copy、weak等具体讲解

property属性修饰符经常的用法 当我们定义一个字符串属性时,通常我们会这样写: @property (nonatomic, copy) NSString *name; 当我们定义一个NSMutableArray类型的属性时,通常我们会这样写: @property (nonatomic, strong) NSMutableArray *books; 而当我们定一个基本数据类型...

sinat_32283541的博客 957

Object.assign详解

一、Object.assign是什么? 首先了解下Object.assign()是什么。我们先看看ES6官方文档是怎么介绍的? Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 简单来说,就是Object.assign()是对象的静态方法,可以用来复制对象的可枚举属性到目标对象,利...

guxin_duyin的博客 9万+

iOS 属性修饰符面试题

没有比这里更全的了,看我就好了 面试官😃 :介绍下ARC下,常用的属性修饰符及其作用? assign,strong,copy,weak atmoic/nonatomic 安全策略 reawrite/readonly 读写策略,访问权限 assign: 修饰基本数据类型(比如int,double,bool等),不涉及引用计数的改变! strong:表示指向并持有该对象,其修饰对象的引用计数加1!只要对象的引用计数不为0,就不会被销毁!用于修饰oc对象! copy:浅拷贝,生成新的指针指向元对.

weixin_38934440的博客 2541
上一篇: 招聘靠谱程序员系列:1 代码风格优化与纠错
下一篇: 招聘靠谱程序员系列:3 怎么用 copy 关键字?
SuAdrenine
博客等级 码龄11年 6粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值