首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Hello工控

    MQTT:To Retain or Not To Retain

    关于本期内容,涉及到Retain保留这个选项,在整理资料,下图有个提问很有代表性,我们的标题就是采纳他的: 所以,要回答这个问题,我们首先的详细了解Retain在MQTT的定义和作用,接下来,我详细介绍下 MQTT Retain。 MQTT 保留消息是带有 retain 标志设置为 true ( retain 标志 = 1 )的 PUBLISH 数据包。如果你熟悉 MQTT,你会知道 MQTT 数据包具有各种属性和标志。 其中一个可用的标志是 retain 标志,它告诉代理必须存储消息,换句话说,就是保留消息。 接收到带有 Retain 标记的消息时,MQTT 代理必须存储该消息,并仅存储发布该消息的主题的最新消息。 Retain标志。

    71010编辑于 2025-05-21
  • 来自专栏iOS开发攻城狮的集散地

    assign,retain,copy,strong

    图片发自简书App assign用于简单数据类型,如NSInteger,double,bool, retain和copy用于对象, readwrite是可读可写特性;需要生成getter方法和setter 方法时 readonly是只读特性 只会生成getter方法 不会生成setter方法 ;不希望属性在类外改变 assign是赋值特性,setter方法将传入参数赋值给实例变量;仅设置变量时; retain 表示持有特性,setter方法将传入参数先保留,再赋值,传入参数的retaincount会+1;retain是在同一块内存地址操作,而copy是重新复制了新的一快内存地址; copy表示赋值特性,setter strong:强引用,arc中使用,与mrc中retain类似,使用之后,引用计数+1;实例变量对传入的对象有所有权,即强引用。 (property retain),最后是_property = property。

    75850发布于 2018-05-22
  • 来自专栏华仔的技术笔记

    回顾retain,copy,assign

    retain是指针拷贝,copy是内容拷贝。在拷贝之前,都会释放旧的对象。 copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 retain和copy还有assign的区别? 3.上面两点其实就是assign和retain的区别,assign就是直接赋值,从而可能引起1中的问题,当数据为int, float等原生类型时,可以使用assign。 retain就如2中所述,使用了引用计数,retain引起引用计数加1, release引起引用计数减1,当引用计数为0时,dealloc函数被调用,内存被回收。 = newValue) { [property release]; property = [newValue retain]; }

    88680发布于 2018-05-17
  • 来自专栏Elton的技术分享博客

    如何获得对象的retain count

    我们最关心的就是一个对象的“retain count”, 当这个数字变成0的时候,这个对象就将被释放内存,如果此时尝试访问这个对象,你的应用程序就会崩溃。 但是如果你不及时release对象,将retain count数量减少的话,又会造成内存泄漏。 想知道一个对象的retain count的值的方法其实很简单。 NSLog([NSString stringWithFormat:@"Retain Count:%i", [someObject retainCount]]); 对象的retainCount方法就会反回这个对象的 retain count的值。

    2.6K40发布于 2021-01-26
  • 来自专栏ShaoYL

    strong,weak, retain, assign的区别@property的参数

    retain:用于指针变量。 ) NSString * myString; @property (nonatomic, retain) UIView * myView; @property (nonatomic, retain) UIViewController 现在xcode4.3支持ARC了,于是苹果建议程序员放弃retain,以后都用weak。 retain 指定retain会在赋值时唤醒传入值的retain消息。此属性只能用于Objective-C对象类型,而不能用于Core Foundation对象。 @property的参数 内存管理相关参数 Retain:对对象release旧值,retain新值(适用于OC对象类型) Assign:直接赋值(默认,适用于非oc对象类型) Copy

    2.1K100发布于 2018-05-11
  • 来自专栏Core Net

    IOS @proporty 关键字(一)retain strong

    @interface User : NSObject @property (nonatomic,retain) NSString* tRetain; @property (nonatomic User* user = [[User alloc]init]; NSString* testRetain = [NSString stringWithFormat:@"retain"]; user.tRetain.retainCount); //4294967295 NSString* testRetain3 = [NSString stringWithFormat: @"retain3 NSLog(@"testRetain3.retainCount=%lu",(unsigned long)testRetain3.retainCount); //1 [testRetain3 retain NSSring* str = [NSString stringWithString:字符串];   此方法相当于上文对一个retain属性赋值。  

    64550发布于 2018-05-17
  • 来自专栏深度学习那些事儿

    pytorch中retain_graph参数的作用

    =True): self.loss.backward(retain_graph=retain_graph) return self.loss 看到上面的代码,我们在内容损失层中定义了一个 但是在这个代码中,我们设置了retain_graph=True,这个参数的作用是什么,官方定义为: retain_graph (bool, optional) – If False, the graph 正文 其实retain_graph这个参数在平常中我们是用不到的,但是在特殊的情况下我们会用到它: 假设一个我们有一个输入x,y = x **2, z = y*4,然后我们有两个输出,一个output_ Specify retain_graph=True when calling backward the first time. .: output1.backward(retain_graph=True) # 这里参数表明保留backward后的中间参数。

    4.7K51发布于 2018-06-21
  • 来自专栏谈补锅

    iOS之属性修饰符 retain、strong和copy区别测试

    时不时会有点迷惑属性修饰符retain、strong、copy三者之间的区别,还是把测试过程记录下来好一点! retain、strong修饰的属性,当引用的原对象值改变后,其他引用该对象的属性值会一起跟着变化,而copy修饰的属性的值还是保持原样。 copy的作用主要也是体现在这里: 让属性值不会随着原引用对象的值改变而改变; 3、retain和strong的区别:作用是一样的,只是写法上的区别。 在非arc机制时,是用retain关键字修饰;在arc机制后,一般都用strong关键字来代替retain了 4、根本原因是:给字符串属性赋值不可变字符串,retain、strong、copy修饰的可变和不可变字符串属性都是指针拷贝 ,所以值也是原来的值不会改变; 第二种情况,给字符串属性赋值可变字符串,retain、strong修饰的属性是指针拷贝,所以源可变字符串值改变后,指针没变,则retain、strong修饰的属性指针与源字符串一样

    2.6K40发布于 2018-09-27
  • 来自专栏月亮与二进制

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

    我们在声明@property 属性时,总是要在括号中写上assign、retain、copy、weak、strong中的一个,很多时候,我们仅仅只是按照习惯去写经常写的那一个,但有时候看代码时又会发现别人用的不尽相同 首先,上面五个并不是在一个层面上的,可以分为两部分,第一部分是assign、retain、copy,第二部分是weak、strong。 我们先说第一部分的assign、retain、copy。 retain: 与assign相对,我们要解决对象被其他对象引用后释放造成的问题,就要用retain来声明。 copy与retain的区别在于retain的引用是拷贝指针地址,而copy是拷贝对象本身,也就是说retain是浅复制,copy是深复制,如果是浅复制,当修改对象值时,都会被修改,而深复制不会。 以上三个可以在MRC中使用,但是weak和strong就只能在ARC中使用,也就是自动引用计数,这时就不能手动去进行retain、release等操作了,ARC会帮我们完成这些工作。

    54910发布于 2021-11-23
  • 来自专栏素质云笔记

    SAS︱操作语句(if、do、select、retain、array)、宏语言、统计量、运算符号

    data aa2; array c{4} (2,4,6,8); run; 5、retain语句——变量存储 利用retain语句可以很方便地实现观测值累加、累乘、缺失观测填充等复杂的数据处理。 (1)用于填充缺失值: data a12;set resdat.ymret; retain yret1; if yret^=. then yret1=yret; run; 在yret^=.的情况下为yret1 由于retain语句的作用,yret1保留前面的值, 这样yret1不会有缺失值,从而起到填充的作用 。 (2)分组加上组序号: 分组,加组序号 proc sort data=a12;by stock year;run; data a13;set a12;by stock year; retain num

    8.3K21发布于 2019-05-27
  • 来自专栏全栈程序员必看

    假设将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

    setName:(NSString *)name{ _name = name; } – (NSString *)name{ return _name; } 2,当把语义特性声明为retain = name) { [ _name release]; _name = [name retain]; } } – (NSString *)name{ return [[ _name retain] autorelease]; } 3,当把语义特性声明为copy时,setter和getter方法内部实现 – (void)setName _name release]; _name = [name copy]; } } – (NSString *)name{ return [[ _name retain

    29510编辑于 2022-07-08
  • 来自专栏Elton的技术分享博客

    iPhoneMac Objective-C内存管理教程和原理剖析(三)@property (retain)和@synthesize的默认实现

    三 @property (retain)和@synthesize的默认实现 在这里解释一下@property (retain) ClassB* objB;和@synthesize objB;背后到底发生了什么 (retain property的默认实现)。 property实际上是getter和setter,针对有retain参数的property,背后的实现如下(请参考附件中的memman-getter-setter.m,你会发现,结果和memman-property.m } } 在setObjB中,如果新设定的值和原值不同的话,必须要把原值对象release一次,这样才能保证retain count是正确的。 由于我们在class内部retain了一次(虽然是默认实现的),所以我们要在dealloc方法中release这个成员变量。

    41020发布于 2021-01-26
  • 来自专栏姓王者的博客

    使用Godot实现单带图灵机模型

    /Panel/VScrollBar/log".text+="\nq0->q1 [retain:"+retain+"]" elif(state==1): if($".".text[pos]=='a' /Panel/VScrollBar/log".text+="\nq1->q1 [retain:"+retain+"]" elif ($".".text[pos]=='c'): pos+=1 /Panel/VScrollBar/log".text+="\nq1->q2 [retain:"+retain+"]" elif(state==2): if($".".text[pos]=='X' /Panel/VScrollBar/log".text+="\nq2->q2 [retain:"+retain+"]" elif ($".".text[pos]=='a'&&retain=='a') /Panel/VScrollBar/log".text+="\nq2->q3 [retain:"+retain+"]" elif ($".".text[pos]=='b' && retain=='b

    26320编辑于 2024-11-20
  • 来自专栏ShaoYL

    Objective-C中的@property和@synthesize用法

    assign: 默认类型,setter方法直接赋值,而不进行retain操作 retain: setter方法对参数进行release旧值,再retain新值。 copy: setter方法进行Copy操作,与retain一样 nonatomic: 禁止多线程,变量保护,提高性能 参数类型 参数中比较复杂的是retain和copy,具体分析如下: getter ];   }   setter分析 1、 C代码   @property(nonatomic,retain)test* thetest;   @property(retain)test* thetest 如: C代码   -(void)setName:(NSString*)_name{        name = _name;   }   retain 声明在setter方法中,需要对设过来的值进行retain 实现参考retain。 4,访问方法的原子性: nonatomic 在默认的情况下,通过synthesized 实现的 setter与getter 都是原子性访问的。

    1.8K110发布于 2018-05-11
  • 来自专栏Elton的技术分享博客

    iPhone/Mac Objective-C内存管理教程和原理剖析(一)基本原理

    release会让retain count减1,只有retain count等于0,系统才会调用dealloc真正销毁这个对象。 4 Objective-C指针赋值时,retain count不会自动增加,需要手动retainretain]; //retain count = 2 [obj1 hello]; //输出hello [obj1 release]; //retain count = 2 – 1 = 1 [obj2 如果此时数组中成员的retain count为1,那么release之后,retain count为0,对象正式被销毁。 如果此时数组中成员的retain count大于1,那么release之后,retain count大于0,此对象依然没有被销毁,内存泄露。

    48810发布于 2021-01-26
  • 来自专栏一“技”之长

    iOS UITableViewCell使用详解

    ) UIImageView *imageView; 图片视图,风格允许时才会创建 @property (nonatomic, readonly, retain) UILabel     *textLabel ; 标题标签 @property (nonatomic, readonly, retain) UILabel     *detailTextLabel; 副标题标签 @property (nonatomic , readonly, retain) UIView      *contentView; 容纳视图,任何cell的子视图都应该添加在这个上面 @property (nonatomic, retain) ) UIColor  *textColor; 设置字体颜色 @property (nonatomic, retain) UIColor  *selectedTextColor; 设置选中状态下的字体颜色 @property (nonatomic, retain) UIImage  *image; 设置图片 @property (nonatomic, retain) UIImage  *selectedImage

    1.5K20发布于 2018-08-15
  • 来自专栏Tom

    pytorch之autograd

    在医院闲来无事,记录一个小参数,叫做retain_graph 先来学习两段代码,来比较其异同 import torch w = torch.tensor([1.], requires_grad=True 2.], requires_grad=True) a = torch.add(w, x) b = torch.add(w, 1) y = torch.mul(a, b) y.backward(retain_graph , create_graph, grad_variables, inputs) 246 retain_graph = create_graph 248 # The reason 我们都知道pytorch是经典的动态图,所以这个参数retain_graph是一个布尔类型的值,它的true or false直接说明了在计算过程中是否保留图 retain_graph (bool, 如果需要多次求导,则在执行backward()时,retain_graph=True。

    28900编辑于 2024-05-27
  • 来自专栏EMQ 物联网

    MQTT 订阅选项的使用

    MQTT 5.0 提供了 4 个订阅选项,分别是 QoS、No Local、Retain As Published、Retain Handling,而 MQTT 3.1.1 则仅提供了 QoS 这一个订阅选项 Retain As Published Retain As Published 同样只有 0 和 1 两个可取值,为 1 表示服务端在向此订阅转发应用消息时需要保持消息中的 Retain 标识不变,为 图片 Retain Handling Retain Handling 这个订阅选项被用来向服务端指示当订阅建立时,是否需要发送保留消息。 将 Retain Handling 设置为 0,表示只要订阅建立,就发送保留消息; 将 Retain Handling 设置为 1,表示只有建立全新的订阅而不是重复订阅时,才发送保留消息; 将 Retain 标识被清除,而后者收到的消息中 Retain 标识被保留: 图片 订阅选项 Retain Handling 的演示 在 Web 浏览器上访问 MQTTX Web。

    1.3K21编辑于 2023-07-19
  • 来自专栏一“技”之长

    iOS开发之CoreTelephoney框架的应用

    [YES] CTTelephonyNetworkInfo类解析如下: //获取所有运营商信息 iOS 12 后支持 @property(readonly, retain, nullable) NSDictionary <NSString *, CTCarrier *> *serviceSubscriberCellularProviders; //当前获取运营商信息 @property(readonly, retain , nullable) CTCarrier *subscriberCellularProvider; //无线网络提供信息 @property (nonatomic, readonly, retain, , nullable) NSString *carrierName; //国家编码 @property (nonatomic, readonly, retain, nullable) NSString *mobileCountryCode; //网络编码 @property (nonatomic, readonly, retain, nullable) NSString *mobileNetworkCode

    2.3K20发布于 2019-03-12
  • 来自专栏Elton的技术分享博客

    Cocoa内存管理的简单规则[翻译]

    所以你必须自己来通过-retain, -release and -autorelease这些命令使用引用计数(reference counting)技术来管理内存。 如果对于实例变量你也使用 -retain 和-release 来管理内存的话,那就错了。 // 因为我们想使用这个变量,所以我们必须retain它 // 避免它被释放掉。 ]也是被允许的 // 我们必须将次调用放在 [newCount retain] 的后面 // 因为如果当count和newCount都指向同一个对象的时候 // 我们会错误的释放它 [count 经常让人混淆迷惑的问题 - 数组和其他集合类 当一个对象被添加到一个array, dictionary, 或者 set等这样的集合类型中的时候,集合会retain它。

    72310发布于 2021-01-26
领券