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

NSString实例将其类报告为NSCFString

在Objective-C中,NSString是一个基本的字符串类,它是一个不可变的字符串。NSCFString是一个底层的字符串类,它是NSString的具体实现。当你在Objective-C中创建一个NSString实例时,它实际上是一个NSCFString实例。

NSCFString是一个私有的类,它不应该被直接使用。它的主要目的是为了提供一个底层的实现,以便NSString可以更有效地处理字符串数据。

在大多数情况下,你不需要直接与NSCFString进行交互。你可以继续使用NSString来处理字符串数据,而不需要担心底层的实现细节。

总之,NSString实例将其类报告为NSCFString,这意味着它是一个NSCFString实例,这是一个底层的字符串类,用于实现NSString

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

相关·内容

iOS簇代码保护引发的Crash原因排查全记录

顺着堆栈找到了 K 歌的 MethodSwizzle 调用 可以发现 K 歌这里并不是直接对 NSString 和 NSMutableString 进行的方法替换,而是直接往其簇的真正实现 __NSCFString...NSString 簇的具体子类。...第三方 SDK NSString 添加了一个 MethodSwizzle 方法,由于命名重合,走到了 K 歌侧逻辑,所以添加了方法名为 ksSafe_StringByAppendingString:...的安全实现,我们记为IMP B,将其与OC 原生的 stringByAppendingString: 实现(记为IMP A)进行了实现交换,当前场景下NSString 的方法映射关系是: <NSString...这里应该注意的是,IMP B 和 IMP C 本质上都是K 歌 NSString 添加的 ksSafe_StringByAppendingString: 的安全实现,其底层是同一套代码实现,当传入的参数不为空时

18710

ARC内存管理中容易忽略的问题

但是如果我们修改第二个字符串内容string,在64位的苹果设备上调试,打印的结果变成跟我们的第一个和第二个字符串结果一样的: NSString *a1 = [[NSString alloc] initWithFormat...字符内容是:string 我们只是缩短了字符串的长度,当前的字符串的就变了 ,更让人奇怪的是字符缩短后的对象没有isa是空。也就是当前字符串对象没有。...1.2、字符串的isa (1)NSTaggedPointerString   NSTaggedPointerString 用指针地址的富余位存储当前变量值,若对象指针的最低有效位1(即奇数),则该指针...这种指针不通过解引用isa来获取其所属,而是通过接下来三位的一个表的索引。该索引是用来查找所属是采用Tagged Pointer的哪个。剩下的60位则存储数据。...(3)__NSCFString    对象被存储在堆上。 __NSCFString 对象是在运行时创建的一种 NSString 子类,他并不是一种字符串常量。

92820

Word报表实例 – 质量检测报告

质量检测报告介绍 质量检测报告或称为检验报告商家或机构提供正规、专业、快捷的质量检测服务如各省市国家质检机构,行业权威性有资质认定的检测的机构等。...委托检验,一般是委托方为了对产品质量进行判断而实施的。 监督检验,是政府行政机关安排的,围殴了监控产品质量而实施的。 认证检验和许可证检验,一般是申请放取得某项证书而进行的检验。...模块之间结构和数据各有不同,对于页眉和页脚内容也有严格的要求,质检报表常用于制作报告的文档。...Word报表模板库 葡萄城报表模板库中包含了多种Word报表模板供广大报表开发设计人员免费参考,并能通过内置的设计器查看报表细节,实时修改并查看效果。...ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具全球超过

85320

Word报表实例 - 质量检测报告

质量检测报告介绍 质量检测报告或称为检验报告商家或机构提供正规、专业、快捷的质量检测服务如各省市国家质检机构,行业权威性有资质认定的检测的机构等。...委托检验,一般是委托方为了对产品质量进行判断而实施的。 监督检验,是政府行政机关安排的,围殴了监控产品质量而实施的。 认证检验和许可证检验,一般是申请放取得某项证书而进行的检验。...模块之间结构和数据各有不同,对于页眉和页脚内容也有严格的要求,质检报表常用于制作报告的文档。...Word报表模板库 葡萄城报表模板库中包含了多种Word报表模板供广大报表开发设计人员免费参考,并能通过内置的设计器查看报表细节,实时修改并查看效果。...ActiveReports 是一款专注于 .NET 平台的报表控件,全面满足 HTML5 / WinForm / ASP.NET / ASP.NET MVC / WPF 等平台下报表设计和开发工作需求,作为专业的报表工具全球超过

1.7K30

消息转发

动态方法解析 这是消息转发的第一步.在这一步骤中,运行时希望能够获得一个方法实现来正确处理这个异常的消息.这里只需要提供一个方法实现就行了,方法的实现主体还在当前对象,处理还在当前中进行解决.针对方法和实例方法...:用于处理异常的实例方法 这两个方法里,只能获取到一个参数就是sel,所以方法的名称是有了的,剩下的就是给方法添加一个候补的方法实现,并在成功添加之后返回True,这样就系统就会重新尝试执行方法....,就跳出来原来的,使用新的来处理当前你的方法.而且,有一个很重要的事情,就是方法不会的消息不能到这一步,只有实例对象的方法才可以转发到这个时机....因为在OC中,每个除了自身之外,还会生成一个同名的元,该元中存储了对象的一些信息(例如方法都是存储在的元中),同时也是对象isa指针的指向. 1.3 完整转发(Normal Forwarding...但是,但是,但是,其实我们只是拦截了实例方法未实现导致的异常,如果是方法未实现导致的异常,怎么处理呢?

1.6K20

工厂设计模式的探讨——iOS簇的应用分析 原

我们先来体验一下在iOS开发中,一些使用工厂设计模式的系统我们带来的便捷之处: 1、认识一个名词 簇 在iOS的Foundation框架中,簇是一种常用的设计模式,他将一些相近的,私有的,具体的子类组合在一个实体的抽象下面...,我称这个抽象实体的,是因为和我们交互的接口承载者,就是这个抽象大类。...我们平时常用的三大NSString,NSArray,NSDictionary都是簇,我们通过他们创建的对象都是其子类对象的实例化,并不是他本身的实例化,我们还通过上面的例子来理解,我买了一辆珲少小汽车...我们可以通过打印名来验证: NSString * str = [[NSString alloc]initWithCString:"2" encoding:0];     NSLog(@"%@",[str...可以看到,真实的对象是NSString的子类__NSCFString进行实例化的。

51720

iOS开发·runtime+KVC实现多层字典模型转换(多层数据:模型嵌套模型,模型嵌套数组,数组嵌套模型)

implementation NSObject (EnumDictOneLevel) + (instancetype)cm_modelWithDict1:(NSDictionary *)dict { /* 实例化对象...2.3 对2.1的改进:2.1无法对多层数据进行转换 思路:可以模仿2.2中的递归,对2.1进行改进:模型中,除了数组属性添加数组元素对应的名映射字典,还要为模型属性对应的名添加映射字典。...这是因为,从字典遍历出来的key无法得知自定义类型的属性的名。...kCMPropertyListKey = "CMPropertyListKey"; + (instancetype)cm_modelWithDict:(NSDictionary *)dict { /* 实例化对象...*ivarType; if ([obj isKindOfClass:NSClassFromString(@"__NSCFString")]) {

2.5K10

(PDF.NET框架实例讲解)将存储过程映射实体

PDF.NET数据开发框架可以将表,视图,表值函数,自定义的查询语句和存储过程映射实体,在上一篇《(PDF.NET框架实例讲解)将任意复杂的SQL查询映射成实体 》已经讲解了自定义查询的实体映射方法...注意为了获得存储过程的表架构,需要在下图的窗口中输入类似的代码: exec 存储过程名称 参数值1,参数值2 这里我们输入 exec GetExcellentDetails 'A',3 查询名称和实体名称都输入...“InvestmentSolutionData”,在我们的Model项目下面将会生成一个文件 InvestmentSolutionData.cs 2,修改刚才生成的实体文件,设置“映射存储过程”:...(注:之所以要用该语法,是为了屏蔽具体数据库的差异)  4,编写代码,使用“存储过程”实体 使用“存储过程”实体跟使用其它类型的实体类比较类似,但存储过程可能有参数,所以需要初始化参数值,实例代码如下所示...IInvestmentSolutionData> GetSolutionData(string solutionName,int period)         {             //InvestmentSolutionData 存储过程实体

896100

PHP.步步营 | 与面向对象 知识详析 与 运用实例

和对象 关于的知识我们可以类比Java的语法去记忆, 对象通过new关键字进行实例化, 实例化的对象通过-> 调用成员; demo: <?..., 可以通过名直接调用, 操作符双冒号::。...被定义公有的成员可以在任何地方被访问。 被定义受保护的成员则可以被其自身以及其子类和父访问。 被定义私有的成员则只能被其定义所在的访问。...类属性 必须定义公有、受保护、私有之一。 兼容PHP5以前的版本,如果采用 var 定义,则被视为公有。 ? 中的方法可以被定义 公有、私有或受保护。...对象的高级特性 对象比较, 当同一个的两个实例的所有属性都相等时,可以使用比较运算符==进行判断, 当需要判断两个变量是否同一个对象的引用时,可以使用全等运算符===进行判断。

98550

iOS单元测试的那些事儿

也可以直接在测试文件中执行单个的测试用例,如下: 对于性能测试用例,其测试完成后会自动生成一个性能报告,对每个性能测试函数,我们都可以为其设置一个基准值,其会分析性能优于或劣于基准值多少。...如下图: 二 关于XCTestCase XCTestCase可以理解一个测试用例,其中可以定义多个测试用例函数。...,当两个表达式结果不相同的实例时,测试失败 XCTAssertIdentical(expression1, expression2, ...) // 实例断言,当两个表达式结果相同的实例时,测试失败...: // 初始化方法,描述参数会在测试报告中包含 - (instancetype)initWithDescription:(NSString *)expectationDescription; // 描述文案...XCUIApplication用来实例化一个App应用实例,调用launch方法进行启动。

94620

iOS中setter方法 、getter方法、点语法、@property

除了生成存取方法之外,编译期还会自动向中添加适当的类型的实例变量,并且在属性名前面加下划线,以此作为实例变量的名字 #import "Person.h" @implementation Person...*lastName = NSString *lastName = [per lastName]; 属性特质 属性的特质也会影响编译器所生成的存取方法,分为四:原子性、读写权限、内存管理关键字、方法名...,设置方法会先保留新值,并释放旧值,然后再把新值设置过去 weak:这种属性设置新值时,设置方法既不会保留新值,也不释放旧值,所修饰的对象销毁时,该属性会被置nil unsafe_unretained...:用于修饰对象类型,所修饰的对象销毁时,该属性不会被置nil copy:设置方法并不保留新值,而是将其拷贝一份。...(当属性类型NSString时,经常用copy,因为传递给设置方法新值有可能指向一个NSMutableString实例,这个NSString的子类,若不拷贝字符串,那么设置完属性后,字符串的值就可能会在对象不知情的情况下被人更改

19410

iOS - 关于 KVC 的一些总结

示例 如下是 BankAccount 和 Transaction 的声明。BankAccount 中有一个 transactions 数组属性,其元素 Transaction 类型。...@avg 读取集合中每个元素的右键路径指定的属性,将其转换为double类型 (nil用 0 替代),并计算这些值的算术平均值。然后将结果以NSNumber实例返回。...@sum 读取集合中每个元素的右键路径指定的属性,将其转换为double类型 (nil用 0 替代),并计算这些值的总和。然后将结果以NSNumber实例返回。...搜索忽略值nil的集合项。可以通过重写compare:方法对搜索过程进行控制。 数组运算符 根据运算符的条件,将符合条件的对象以一个NSArray实例返回。...如果取到的值是一个NSNumber支持的数据类型,则将其存储在NSNumber实例并返回。   如果取到的值不是一个NSNumber支持的数据类型,则转换为NSValue对象, 然后返回。

1.8K10

基于 KIF 的 iOS UI 自动化测试和持续集成

KIF 我们提供了对有 accessibility 属性控件的操作接口,如下最简单的两个操作接口: 点击一个元素:- (void)tapViewWithAccessibilityLabel:(NSString...beforeAll; 在本类中第一个 test case执行前执行一次 用处:执行本类中各个测试函数的公共操作 注意:因为不能保证这个方法与 test case 是同一个实例...注意:因为确保这个方法与 test case 是同一个实例,所以可以用来设置实例变量 - (void)afterEach; 在每一个 test case执行后执行一次 用处:用来将...保证用例结构清晰明朗,我们借鉴 selenium pageObject 的设计方式, 遵循如下规则: a. 将页面上的对元素的发现、操作处理抽象相应的,返回操作结果; b....所以在脚本中我们遍历所有模拟器设备,将其进行重置。 (2) 键盘敲击延迟 我们的测试用例在输入框输入文字时,经常出现输入不全而导致失败的问题。

2.2K60

Swift 字符串和字符

与 Swift 中其他值一样,能否更改字符串的值,取决于其被定义常量还是变量。 Swift 的 String 类型与 OC 的 Foundation NSString 进行了无缝桥接。...可以在任意要求传入 NSString 实例作为参数的 API 中使用 String 类型的值进行替换。 1. 字符串字面量 字符串字面量是由双引号包裹着的具有固定顺序的文本字符。...Horse and carriage" let constantString = "Highlander" constantString += " and another Highlander" // 这会报告一个编译错误...在 OC 和 Cocoa 中,通过选择两个不同的 ( NSString 和NSMutableString )来指定该字符串是否可以被修改,Swift 中的字符串是否可以修改仅通过定义的是变量还是常量来决定...和 OC 中的 NSString 不同,在 OC 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋给一个变量,永远都是传递或赋值同一个NSString 实例的一个引用。

75410

KVO详解(一)

NSKeyValueObservingOptions)options context:(nullable void *)context; 我们需要注意第四个参数context,很多同学在写代码的时候会直接将其赋值...通过文档说明我们可以得知,context实际上是一个确定更改通知来源的标识,如果将其设置NULL,那么在响应所观察的变化的时候就需要通过keyPath和keyPath来共同确定变化的来源,如下: -...但是当一个实例对象被使用KVO观测之后,这个被观测的实例对象中的isa指针就会被修改,被修改后的isa指针就不再指向原来真正的的内存地址了,而是指向了一个中间的内存 因此,决不能使用isa指针来确定实例对象的...获取到的是创建self.person实例对象的那个。...这说明,移除了观察者之后,会再次调整被观测对象的isa的指向,将其指向最初的原。 现在在考虑一个问题,既然isa又被指回最初的原了,那么那个中间子类是否会被销毁呢?答案是不会的。

67331
领券