retain 和 assign 的区别使用

网表 SDF 仿真中常用的编译选项 这个存档文件包含了仿真过程中的各种信息,例如仿真的时间、仿真对象的状态、信号的值等。在一些旧的仿真工具版本或特定的设计流程中,负时序检查的处理方式与新版本有所不同,存在潜在问题,因为标准单元输出为确定状态,可能不会影响后续电路的执行,容易遗漏一些违例信息,所以需要对仿真的日志文件中的违例信息进行详细筛查。的值也不会改变,不会影响 UDP 的输出,也就避免了标准单元输出不定态,保证了标准单元输出状态的确定性。会发生变化,进而可能影响到模拟触发器行为的 UDP 中的真值表行为,导致触发器模型输出不定态。 阅读详情

MRC 下,会出现循环 retain 的问题,这种情况下,一次 release 并不能完成释放,如下:

#import <Foundation/Foundation.h>
@class Person;

@interface Car : NSObject

@property (nonatomic , retain ) Person * ownerPerson;

@end
#import <Foundation/Foundation.h>

@class Car;

@interface Person : NSObject

@property (nonatomic , retain ) Car * ownerCar;

@end
- (void)viewDidLoad {
    [super viewDidLoad];

    Car * mCar = [[Car alloc] init];
    Person * mPerson = [[Person alloc] init];

    mCar.ownerPerson = mPerson;
    mPerson.ownerCar = mCar;

    [mCar release];
    [mPerson release];

    NSLog(@"mCar %ld",[mCar retainCount]);
    NSLog(@"mPerson %ld",[mPerson retainCount]);

    [mCar release];
    [mPerson release];
}

打印结果如下:

2017-11-19 16:18:46.997212+0800 test[4158:362888] mCar 1
2017-11-19 16:18:46.997400+0800 test[4158:362888] mPerson 1
2017-11-19 16:18:46.997501+0800 test[4158:362888] Car dealloc
2017-11-19 16:18:46.997579+0800 test[4158:362888] Person dealloc

因为循环引用的问题,需要再次进行 release,但是这样的处理又不科学,这里解决的时候,可以将 reatin 换为 assign 进行修饰.因为 assign 不会使得引用计数 +1

sdf3.0协议理解性翻译 这篇文章是对sdf3.0协议的理解性翻译,整体内容顺序结构和sdf3.0协议一致,主要是为了协助自己理解后仿真时导入的sdf里的内容。 参考手册: 1.《Standard Delay Format Specification》 Version3.0 2.《Static Timing Analysis for Nanometer Designs:A Practical Approach》,知乎有位博主对《Static Timing Analysis for Nanometer Designs:A Pra 阅读详情

相关推荐

vcs工具,使用手册,编译仿真参数

vcs tool

sdf反标之RETAIN信息

RETAIN TIME指的是从输入变化后开始计算,输出保持的时间。过了RETAIN TIME后,输出会出现一段X态,直到最终稳定。网表的sdf文件里面会标注路径的RETAIN信息,比如一个两输入的与门: and u(qout, d1, d2); specify (d1 => qout) = (10); (d2 => qout) = (10); endspecify ...

kevindas的博客 1万+

sdf_3.0.pdf

SDF3.0官方协议及解释,后仿真SDF反标必须理解的协议,反标了IOPATH,INTERCONNECT、TIMING CHECK等等时序延时及时序要求。

门仿真及基于 VCS 的门仿流程、Debug 方法介绍

门仿真可以分为不带 SDF 的零延时仿真(Zero-Delay Simulation)和带 SDF反标(Back Annotates)的时序仿真(Timing Simulation)。采用 DC 综合后的网表不作 SDF 反标的零延时仿真是一种前仿真,网表反标 SDF (Standard Delay Format) 的仿真是后仿真。

MangoPapa 9187

sdf官方文档_3.0版本--超级详细

sdf官方文档_3.0版本--超级详细 值得下载参考使用

SDF反标RETAIN信息解析[可运行源码]

本文详细解析了SDF反标中的RETAIN TIME概念,即输入变化后输出保持的时间,以及随后出现的X态现象。通过一个两输入与门的例子,展示了网表SDF文件中RETAIN信息的标注方式。文章还介绍了在VCS仿真器中,通过不同的编译选项(如-sdfretain和-sdfretain -xlrm alt_retain)来控制RETAIN信息在波形中的体现方式,以及这些选项对仿真速度和事件调度的影响。最后,作者提到VCS手册中对这部分内容的说明不够清晰,并计划通过后续仿真进一步确认。

芯片验证之后仿真

本文梳理了芯片开发中验证人员进行的后仿真流程和具体的实现步骤和方法,并对仿真中要注意的事项进行了具体描述。

weixin_56631451的博客 1万+

哨兵2号遥感影像解析全流程:步骤、算法与AI应用详解

未来,多源数据融合与边缘计算技术的应用将进一步拓展遥感解析的边界。波段合成:选择10m分辨率波段(如B2、B3、B4、B8)进行Layer Stacking,生成多光谱影像。| 分类与识别 | Scikit-Learn、PyTorch | SVM、CNN、K-Means聚类 | 地块分类、目标检测 || 数据预处理 | SNAP、Sen2Cor | 大气校正、几何校正 | L2A产品生成、格式转换 || 波段融合 | ENVI、GDAL | Layer Stacking、重采样 | 多光谱影像合成 |

zhz5214的博客 2710

assign、retain、copy的区别

这是在网上找的一篇,解释三者区别最清楚的。 ================================== 举个例子可能更好理解点  NSString *pt = [[NSString alloc] initWithString:@"abc"];  上面一段代码会执行以下两个动作  1 在堆上分配一段内存用来存储@"abc"  比如:内存地址为:0X1111 内容为 "abc" 

萱的house 976

c#.net使用正则表达式验证文本中是否包含手机号码或电话号码?

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Collections; namespace RegularPhoneApp { class Program

码农 3584

Oracle 11g R2 RAC 到单实例 Data Guard 搭建(RMAN备份方式)

Oracle RAC集群到单机的dataguard搭建过程

驰兔的博客 1721

strong、weak、copy、retain和assign的区别

assign:assign一般用来修饰基本的数据类型,包括基础数据类型(NSInteger,CGFloat)和C语言数据类型(int,float,double,char)等等。因为assign声明的属性,是不会增加引用计数的,也就是说声明的属性释放后也就没有了,及时其他对象引用了它也不会保留,只会造成crash。但是及时被释放,指针却还在,成为了野指针,如果新的对象被分配到了这个内存地...

Murendless 393

Allegro网表导入报错VOIDs not allowed in parent SHAPE的解决方案

在PCB设计流程中,网表导入是确保电气连接正确传递的关键步骤。其原理是将原理图的逻辑连接关系映射到物理版图的图形数据库中。这一过程的技术价值在于保证设计数据的一致性,避免后续生产中出现电气错误。然而,在Cadence Allegro等EDA工具的实际应用中,数据库内部状态的不一致可能引发操作失败,例如常见的“VOIDs are not allowed in the parent SHAPE”报错。这类问题通常源于多人协作、跨版本操作或频繁编辑后积累的数据结构冗余。针对此场景,核心的解决方法是执行Databa

weixin_30954817的博客 319

retain和copy还有assign的区别

1. 接触过C,那么假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给 (assign)了b。此时a和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如 果a释放了,那么b在使用这块内存的时候会引起程序crash掉。2. 了解到1中assign的问题,那么...

144

Linux基础——“C语言高级编程” C语言中的细节你真的知道吗?

文章目录GCC简介 GCC简介 gcc 所支持后缀名解释 .c c原始程序 .C / .cc /.cxx C++原始程

weixin_44278698的博客 2511

AIGC实战——基于Transformer实现音乐生成

Transformer 是最流行的音乐生成技术之一,因为音乐可以视为一个序列预测问题,Transformer 模型将音符视为一个个符号的序列(类似于句子中的单词),从而用于生成音乐。Transformer 模型基于先前音符预测下一个音符,生成音乐作品。在本节中,将学习如何处理音乐数据,并应用 Transformer 生成与给定训练集风格相似的音乐。

盼小辉丶的博客 1万+

retain, copy, assign区别

1、retain, copy, assign区别 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块 内存的时候会引起程序crash掉。 了解到1中...

diaochuanzhi7826的博客 102

Alist/Openlist 的 WebDAV 老是连不上?别再乱试了,这才是标准答案!(1Panel如何使用Alist/Openlist作为备份账号)

😫服务器硬盘告急,想用 Alist/Openlist 的 WebDAV 备份却屡屡失败?别慌!本文带你揭秘正确的连接地址和权限配置,手把手教你搞定 1Panel 备份设置,让你的网盘秒变备份仓库!

XiaoqiangClub的博客 5576

retain、strong、weak、assign区别

1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块内存的时候会引起程序crash掉。   2. 了解到1中assign的问题,那么如何解决?最简单的一

315

【unity实战】随机地下城生成3——设置人物移动脚本、动画的切换和摄像机的跟随(含源码)

给房间添加触发器碰撞体,用来判断角色是否进入房间切割人物图片,注意人物每个图片高度可能不同,所有我们需要把轴心调整到人物的底部把人物跑步图片的高度,统一调成20,下面镂空,达到跳跃的效果快速创造人物动画,以人物idle为例,我们选中所有的idle人物图片,拖拽至窗口,unity就会自动生成,并提示保存动画位置别忘记设置人物排序图层,运行人物就动起来了新增run动画设置人物碰撞体设置刚体将重力设置为0,持续人物移动和动画切换的代码设置摄像机跟随单例代码在room中调用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1051

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

nonamic,assign,copy,retain的区别

nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。                     (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么n

Reborn_Young的专栏 696

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

iphone retain 和 assign的区别

assign表示直接传递引用给属性值 retain表示将某个对象引用传递给属性值时,属性值会将引用计数加一,也就是说,属性会自己额外保留一份引用. 举例子说. NSObject a= [[NSObject alloc] init]; classb.oneProperty = a; [a release]; 如果是assign的话,a被release之后,classb的oneProper...

{丸の子} 183

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

iOS中assign、retain、copy、weak、strong的区别以及nonatomic的含义

声明@property 属性时,括号中assign、retain、copy、weak、strong以及nonatomic到底是干啥的

Minecraft 6391

assign、retain和copy的区别

一、assign属性   当数据类型为int、float等原生类型时,可以使用assign,否则可能导致内存泄露。例如当使用malloc分配了一块内存,并把它的地址赋值给了指针a,后来如果希望指针b也共享这块内存,于是讲a赋值给(assgin)b。这时就用到了assgin,此时a和b指向同一块内存。但是现在问题出现了,当a不再需要这块内存时,能都直接释放呢?肯定是不能的,因为a并不知道b是否

neveraway1993的博客 2037

iOS retain, copy, assign区别

一,retain, copy, assign区别1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b。此时a 和b指向同一块内存,请问当a不再需要这块内存,能否直接释放它?答案是否定的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块 内存的时候会引起程序crash掉。...

aihuangfu1459的博客 112
上一篇: iOS 常用修饰词
下一篇: NSString NSMutableString NSArray NSMutableArray Block 分别用哪些修饰?
lin_transform
博客等级 码龄9年 3粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值