首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Objective C NSString*属性保留计数奇数

在Objective-C中,NSString属性的保留计数(retain count)是由编译器自动管理的。当一个NSString对象被分配给一个属性时,它的保留计数会自动增加。当属性被释放或分配给另一个对象时,原来的对象的保留计数会自动减少。

通常情况下,你不需要担心保留计数的奇数问题。但是,如果你确实需要在某个时刻保留一个NSString对象的奇数保留计数,你可以使用CFRetain函数来实现。CFRetain函数是Core Foundation框架中的函数,可以用来增加一个对象的保留计数。

例如,以下代码可以保留一个NSString对象的奇数保留计数:

代码语言:objc
复制
NSString *myString = @"Hello, world!";
CFRetain(myString);

在这个例子中,myString对象的保留计数会增加1,变成奇数。

需要注意的是,在使用CFRetain函数时,你需要在适当的时候释放对象,以避免内存泄漏。你可以使用CFRelease函数来释放对象。

总之,在Objective-C中,NSString属性的保留计数是由编译器自动管理的,你不需要担心它的奇数问题。如果确实需要保留一个NSString对象的奇数保留计数,可以使用CFRetain函数来实现。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Objective-C中的属性机制

Objective-C 2.0中的属性机制为我们提供了便捷的获取和设置实例变量的方式,也可以说属性为我们提供了一个默认的设置器和访问器的实现。...Demo如下:   @interface Student : NSObject { NSString *name; int idNumber; } //定义属性 @property NSString...weak : 表示弱引用,不拥有对象的所有权,当目标对象被销毁之后,属性值会被自动设为nil;     ​    ​    ​assign(赋值): 直接赋值,计数器不会加一,简单的赋值方法,默认赋值方式...,适合基本数据类型     ​    ​    ​copy(拷贝):把原来的对象拷贝过来,计数器会加一,比如原来对象的地址为0x01 ,拷贝过来的对象的地址为0x02;     ​    ​    ​retain...(保留):这种方式传递的是指针,原有的对象和被赋值的对象的地址是一样的     ​    ​     ​   4.原子操作     ​    ​    ​    ​atomic: 线程安全的;     ​    ​    ​    ​

1.3K70

属性“__attribute__”在Objective-C中的应用

属性“__attribute__”在Objective-C中的应用       关于__attribute__,你可能用的不多,但是一定经常见到,在系统的Foundation框架中,__attribute...__attribute__((format(__NSString__, 1, 2))); format属性有3个参数可以设置,其中第一个参数指定要检查的格式化风格,这里设置为NSString的格式化风格...autoreleasepool { NSLog(@"main函数执行"); } return 0; } 7. objc_subclassing_restricted       这是Objective-C...8. objc_requires_super       这个属性用来修饰Objective-C中父类的方法,如果子类进行了重写,在重写的方法中没有调用父类方法,则会进行编译器提示。...11. objc_runtime_name       这是一个很有趣的属性,其可以运行时改变Objective-C类的类名,但是不会影响其行为。

2.2K20

《Effective Objective-C》干货三部曲(一):概念篇

本书是iOS程序员入门的必读书籍,它讲述了在iOS开发中(Objective-C语言)可以遵循的规范和一些开发技巧。...copy:不保留新值,而是将其拷贝 注意:遵循属性定义 如果属性定义为copy,那么在非设置方法里设定属性的时候,也要遵循copy的语义 - (id)initWithFirstName:(NSString...计数器的操作: retain:递增保留计数。 release:递减保留计数 autorelease :待稍后清理“自动释放池时”,再递减保留计数。...注意:在对象初始化后,引用计数不一定是1,还有可能大于1。因为在初始化方法的实现中,或许还有其他的操作使得引用计数+1,例如其他的对象也保留了此对象。...有时,我们无法确定在某个操作后引用计数的确切值,而只能判断这个操作是递增还是递减了保留计数。 2.

89520

IOS6学习笔记(三)

-(NSString *)newPersonName NS_RETURNS_NOT_RETAINED;  4.自由桥接   与Objective-C库不同,我们在Objective-C中使用的标准C语言和...__bridge   它告诉ARC不要增加它的引用计数的值,也不要更改所有权。   2.__bridge_retained   若想要转换C指针类型并增加引用计数的值,我们可以使用第二个修饰符。...当要从Objective-C方法(它创建一个Core Fundation对象并在之后使用CFRelease方法将其释放)返回一个保留过的指针时,我们可以使用这个修饰符。...如果Objective-C方法属于NSRETURNS_RETAINDED系列,就要返回保留过的指针。   3....__bridge_transfer   如果要将Core Fundation指针类型转换成Objective-C指针并为引用计数加1,可以使用最后一个修饰符。

68090

iOS 面试策略之语言工具-Objective-C

现在的面试中,传统大厂如 BAT 对 Objective-C 的语言进行较多考察,日常开发也是以 Objective-C 为主。...本章将探讨 Objective-C 的基本语言特性,其动态特性将与 Swift 比较中设计。 Objective-C 面试理论题 1.什么是 ARC?...加分回答: Objective-C 中,基本数据类型的默认关键字是 atomic, readwrite, assign;普通属性的默认关键字是 atomic, readwrite, strong。...Objective-C 面试实战题 8.属性声明代码风格考查 关键词:#属性声明 @property (nonatomic, strong) NSString *title; @property (assign...copy 表示该属性保留新值,而是将其拷贝。这样一来,属性的封装性就可以得到保护,其对应的值是不会无意间被修改的。

64920

Objective-C高级编程》温故知新之自动引用计数

本文"鸟瞰图" 前言 很久前看了《Objective-C高级编程 iOS与OS X多线程和内存管理》这本书,但当时看起来晦涩难懂。最近利用下班时间重读了一遍,觉得还是得记录一下。...工具:Clang是一个C语言、C++、Objective-CObjective-C++语言的轻量级编 Clang使用: clang -rewrite-objc (文件名) 说一下clang工具的使用...引用数0时关灯 办公室的照明管理 转换到Objective-C程序中,其实就是下图 引用计数的内存管理 内存管理的思考方式 自己生成的对象,自己所持有。 非自己生成的对象,自己也能持有。...ARC有效时,以下可作为属性声明中使用的属性来用。...书原文中写道:在声明类成员变量时,如果同属性声明中的属性不一致则会引起编译错误。

59750

oc深坑測试题及其答案

C、retain:此属性仅仅用于obj-c的对象类型。对參数进行release旧值,再retain新值。 D、copy:此属性仅仅对实现NSCopying协议的对象有效(NSString)。...B、Objective-C一个完整的类分为interface和implementation两块 CObjective-C对象使用new分配内存,用delete释放 D、Objective-C协议分为非正式协议和正式协议...C、仅仅能訪问对象的属性。 D、当对象的属性值改变时,我们能收到一个通知。...答案:(D) A、没有getter方法,当对calvalue赋值时,将产生一个NSString副本。 B、此属性可保证多线程安全。 C、此属性在合成时能够生成设置器方法。...答案:(F) 正确 错误 4、 不是每一个对象都有引用计数。 答案:(F) 正确 错误 5、 Objective-C 能够多重继承。

39530

iOS_Effective Objective-C 20 编写高质量iOS与OS X代码的52个有效方法

三读Objective-C2.0 笔记~(作为一个OC开发者,必读之书) gitbook地址 一、熟悉Objective-C 1、了解Objective-C语言的起源 ​ Objective-CC...Objective-CC的“超集”(superset),所以C语言中的所有功能在编写Objective-C代码时依然适用。因此必须同时掌握C与OC这两门语言的核心概念,方能写出高效的OC代码来。..."Objective-C"; // 而非: [arr replaceObjectAtIndex:0 withObject:@"Objective-C"]; // 创建字典,使用 NSMutableDictionary...对象创建好之后,其保留计数至少为1。若保留计数为正,则对象继续存活。当保留计数降为0时,对象就被销毁了。 在对象生命期中,其余对象通过引用来保留或释放此对象。...要点: 块是CC++、Objective-C中的词法闭包 块可接受参数,也可返回值 块可以分配在栈or堆上,也可以时全局的。

95540

Objective C编程》笔记

id的含义是:指针,并可以指向任意类型的Objective-C对象,e.g.: id delegate 注意:以上声明没有用星号。id已经隐含了星号的作用。...15.CC++、Objective-C这类语言的代码文件要经过两步才能完成编译。首先,预处理器(preprocessor)会读入并处理整个文件。...18.在Objective-C中,有三种途径可以实现回调。 a.目标-动作(Target-action):在应用开始等待前,要求“当X发生时,向指定的对象发送某个特定的消息。”...28.属性生命周期类型: a.unsafe_unretained(不需要自动归零,不需要保留):凡是非对象类型的实例变量,都应该使用该特性。...b.strong:要求保留传入的对象,并放弃原有对象(如果原有对象不再有其它拥有方,就会被释放)。凡是指向对象的实例变量,通常都应该使用strong特性。 c.weak特性,要求不保留传入的对象。

58330

iOS @property探究(一): 基础详解你要知道的@property都在这里

: 深入代码理解 Apple在Adopting Modern Objective-C一文中介绍了现代化OC的写法,其中就介绍尽量使用@property定义类的属性,先来看看苹果是怎么介绍property...Apple Official Property Introduction Objective-C属性(property)是通过用@property定义的公有或私有的方法。...或者,你也可以使用Xcode中的modern Objective-C转换器来自动转换你的代码。参考Refactoring Your Code Using Xcode。...为了方便使用,Objective-C允许使用点语法来访问getter和setter。...strong、weak strong表示属性对所赋的值持有强引用表示一种“拥有关系”(owning relationship),会先保留新值即增加新值的引用计数,然后再释放旧值即减少旧值的引用计数

1.5K90

《Effective Objective-C》干货三部曲(二):规范篇

继上一篇《Effective Objective-C 》干货三部曲(一):概念篇之后,本篇即是三部曲的第二篇:规范篇。本篇归纳讲解的是书中有关Objective-C开发的规范性知识。...该三部曲系列是由笔者将《Effective Objective-C 》这本书的52个知识点分为三大类进行了归类整理而成: 概念类:讲解了一些概念性知识。...三部曲分布图 作为三部曲的第二篇,本篇总结抽取了《Effective Objective-C 》这本书中讲解规范性知识的部分:这些知识点都是为了避免在开发过程中出现问题或给开发提供便利的规范性知识点。...并且在dealloc方法中也不能调用属性的存取方法,因为很有可能在这些方法里还有其他操作。而且这个属性还有可能处于键值观察状态,该属性的观察者可能会在属性改变时保留或者使用这个即将回收的对象。...而三部曲的最后一篇:技巧篇则着重讲解了一些在编写Objective-C代码的过程中可以使用的一些技巧。

78510

《Effective Objective-C》干货三部曲(二):规范篇

继上一篇《Effective Objective-C 》干货三部曲(一):概念篇之后,本篇即是三部曲的第二篇:规范篇。本篇归纳讲解的是书中有关Objective-C开发的规范性知识。...该三部曲系列是由笔者将《Effective Objective-C 》这本书的52个知识点分为三大类进行了归类整理而成: 概念类:讲解了一些概念性知识。...然后用思维导图整理了一下: 三部曲分布图 作为三部曲的第二篇,本篇总结抽取了《Effective Objective-C 》这本书中讲解规范性知识的部分:这些知识点都是为了避免在开发过程中出现问题或给开发提供便利的规范性知识点...并且在dealloc方法中也不能调用属性的存取方法,因为很有可能在这些方法里还有其他操作。而且这个属性还有可能处于键值观察状态,该属性的观察者可能会在属性改变时保留或者使用这个即将回收的对象。...而三部曲的最后一篇:技巧篇则着重讲解了一些在编写Objective-C代码的过程中可以使用的一些技巧。 ----

88121
领券