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

NSData方法mutableCopy()不能作为objC [...mutableCopy]?

NSData方法mutableCopy()不能作为objC ...mutableCopy的原因是因为NSData类在Objective-C中是不可变的,不支持可变操作。mutableCopy()方法是用于创建NSData对象的可变副本,但是在使用objC ...mutableCopy语法时,会尝试调用NSData对象的可变方法,而不是创建可变副本。

如果想要进行可变操作,可以使用NSMutableData类来代替NSData类。NSMutableData是NSData的子类,支持可变操作。可以使用mutableCopy()方法创建NSMutableData对象的可变副本,并进行objC ...mutableCopy操作。

以下是NSMutableData的相关信息:

  • 概念:NSMutableData是一个可变的二进制数据容器类,继承自NSData类。
  • 分类:NSMutableData属于Foundation框架中的类。
  • 优势:NSMutableData可以动态地修改其内部的二进制数据,提供了一系列的可变操作方法。
  • 应用场景:适用于需要频繁修改二进制数据的场景,如网络数据传输、文件读写等。
  • 腾讯云相关产品:腾讯云对象存储(COS)是一种云存储服务,可以存储和管理大规模的非结构化数据,包括图片、音视频、文档等。您可以使用腾讯云对象存储(COS)来存储NSMutableData对象的可变副本。
  • 产品介绍链接地址:腾讯云对象存储(COS)

请注意,以上答案仅供参考,具体的技术实现和推荐产品可能需要根据具体情况进行调整。

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

相关·内容

问题——持续更新

https://blog.csdn.net/u010105969/article/details/48552831 第三方库 -fno-objc-arc 深拷贝、浅拷贝   copy,mutableCopy...:在程序中怎么去实现 应用图标怎么添加 插件:  空工程 一些方法为什么总是调用不到,如创建在视图控制器中创建单元格???   ...解决:调用方法时两个参数传的有问题,可能是反了,以至于出现了负数。 在表格协议的方法中  return  2  和return  _apps.count 结果不同(表现在单元格的高度上)???...(之前的做法都是创建一个空的工程)     解决:将ViewController头文件导入到AppDelegate中,按照以前的写法,创建控制器的对象,再创建导航控制器的对象,并将其作为当前窗口的根视图控制器...查询电话号码的程序     UIImage转成NSData   NSData转成UIImage

1.2K20

面经之《招聘一个靠谱的iOS》import CYLBlockExecutor.himport CYLBlockExecutor.himport CYLNSObject+RunAtDeallo

的 setter :由于是 name 是只读属性,所以编译器不会为其创建对应的“设置方法”,用初始化方法设置好属性值之后,就不能再改变了。...下面分别介绍下方法的内部实现: objc_initWeak函数的实现是这样的:在将“附有weak修饰符的变量(obj1)”初始化为0(nil)后,会将“赋值对象”(obj)作为参数,调用objc_storeWeak...除了生成方法代码之外,编译器还要自动向类中添加适当类型的实例变量,并且在属性名前面加下划线,以此作为实例变量的名字。...不能再有新的 __weak 弱引用, 否则将指向 nil....类方法: 类方法是属于类对象的 类方法只能通过类对象调用 类方法中的self是类对象 类方法可以调用其他的类方法方法不能访问成员变量 类方法中不定直接调用对象方法 实例方法: 实例方法是属于实例对象的

964100

NSCopying和NSCoding对象序列化反序列化基础详解你要知道的NSCopying、NSCoding协议及对象序列化和反序列化都在这里

NSCopying协议 Foundation框架中为我们提供的基础的类基本都实现了NSCopying协议,因此,我们可以使用copy方法用来获取对象的一个不可变副本对象,可以使用mutableCopy方法用来获取对象的一个可变副本对象...,当需要对自定义类调用copy或mutableCopy方法就需要实现NSCopying协议。...之所以这样做是为了和第三组实验进行对比,同样来获取可变和不可变副本对象,并输出地址,发现只有mutableCopy方法的地址不同。...,在实现方法中首先调用了NSObject类的allocWithZone:方法来创建一个新的对象,如果继承的不是NSObject类,而是继承其他自定义类,如果继承的父类没有实现NSCopying协议这里不能使用...NSCoding协议与对象序列化和反序列化 在开发中可能需要将自定义对象持久化存储在本地的文件中,或将对象转换为NSData类的数据并通过网络发送,要实现这些操作的前提就是自定义对象需要遵守NSCoding

1.3K90

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

或者 stringWithString: 方法(需要说明的是,这个方法在 iOS6 SDK 中已经被称为redundant,使用这个方法会产生一条编译器警告。这个方法等同于字面值创建的方法)产生。...对immutable对象进行copy,是浅拷贝,mutableCopy是深拷贝;对mutable对象进行copy和mutableCopy都是深拷贝。...mutableCopy] //深拷贝 2.4 单层深拷贝 集合对象的深拷贝仅限于对象本身,对象元素仍然是浅拷贝。...ARC下retainCount是无法使用的,获取引用计数(retain count)]的三种方法,虽然不是很准确,但是还是可以鉴别一下当前内存的 (1) 私有方法 OBJC_EXTERN int _...为了保证这个特性在NSDcitionary中对key的内存管理为copy,在复制的时候需要考虑对系统的负担,因此key应该是轻量级的,所以通常我们都用字符串和数字来做索引,但这只能说是key-to-object映射,不能说是

93320

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

第11条:理解objc_msgSend的作用 在OC中,如果向某对象传递信息,那就会使用动态绑定机制来决定需要调用的方法。在底层,所有方法都是普通的C语言函数....实例方法- (id)forwardTargetForSelector:(SEL)selector;:询问是否能找到未知消息的备援接受者,如果能找到备援对象,就将其返回,如果不能,就返回nil。...string appendFormat:@"%d,", [object intValue]]; } else if ([object isKindOfClass:[NSData...- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 2.作为方法的“输出参数”返回给调用者...而且,如果我们想获得某对象的不可变型,统一调用copy方法;获得某对象的可变型,统一调用mutableCopy方法

89520

iOS 底层拾遗:autorelease 优化

首先把NSObject类地址和new方法地址找到分别放入x0和x1,然后调用_objc_msgSend,调用完成后x0里面放的就是[NSObject new]得到的对象地址,所以后面直接找到copy方法调用...尝试使用alloc和mutableCopy,得到几乎一致的结果,似乎就能得到只要是生成本类实例的方法都不会做优化的结论? 并不能。...,所以可以猜测: 编译器不是通过返回类型来判断的,而是通过简单的符号匹配,发现alloc/new/copy/mutableCopy符号就不做优化。...函数强制改为objc_autoreleaseReturnValue等方法,且 MRC 下编译的代码在调用方法时不会加入mov fp fp企图优化(推理也可知,因为retain/release操作是不能优化的...后语 本文通过探索的方式分析了 autorelease 的优化逻辑,实际上并不能铁板钉钉的说明事实,只有通过查看 clang 编译器代码才能真正的有说服力。

1.3K21

Whats New in LLVM 9

比较 NSNumber 稍有经验的老司机都懂得 NSNumber 不能直接跟 raw value 直接比较,毕竟前者是类的实例对象,后者是基本类型。...重写 set 方法可以解决此问题: - (void)setArray:(NSMutableArray *)array { _array = [array mutableCopy]; } 一些建议...Objective-C 中有五大方法家族,每个家族都有自己的规矩:alloc/new/copy/mutableCopy 四个家族的方法返回的是 “a retainable object pointer...把一个方法划归到某个方法家族有两种方式: 按照命名惯例划分方法家族 使用 __attribute__((objc_method_family( somefamily ))) 直接指定 如果某个方法不遵循所在家族的规矩...有关 Clang 的各种属性定义,请查看 Attributes in Clang 探索方法返回值内存管理的奥秘 先做两种情况的实验,查看汇编代码,并总结: 方法为 alloc/new/copy/mutableCopy

2.3K100

IOS开发系列—Objective-C之Foundation框架

ObjC中我们一般将基本数据类型装箱成NSNumber类型(当然它也是NSObject的子类,但是NSNumber不能对结构体装箱),调用其对应的方法进行转换: +(NSNumber *)numberWithChar...但是我们有时候确实想在数据或字典中存储nil值而不是作为结束标记怎么办呢?这个时候需要使用NSNull,这个类是一个单例,只有一个null方法。...拷贝 对象拷贝操作也比较常见,在ObjC中有两种方式的拷贝:copy和mutablecopy,这两中方式都将产生一个新的对象,只是后者产生的是一个可变对象。...,但是我们知道NSString本身就不能改变那么即使我重新复制一个对象也没有任何意义,因此为了性能着想如果通过copy方法产生一个NSString时ObjC不会再复制一个对象而是将新变量指向同一个对象。...从归档范围来讲NSKeyedArchiver适合所有ObjC对象,但是对于自定义对象我们需要实现NSCoding协议;从归档方式来讲NSKeyedArchiver分为简单归档和复杂对象归档,简单归档就是针对单个对象可以直接将对象作为根对象

68960

探寻iOS之协议(protocol)

总结: 协议能够声明方法,协议遵守者实现协议中的方法,声明协议的类通过遵守者调用协议中的方法; protocol不能定义成员变量,但是能够声明属性,因为属性=成员变量+setting方法+getting...; - (oneway void)release OBJC_ARC_UNAVAILABLE; - (instancetype)autorelease OBJC_ARC_UNAVAILABLE; - (NSUInteger...)retainCount OBJC_ARC_UNAVAILABLE; - (struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; @property (readonly...因为上文提到过,protocol不能定义成员变量,但是能够声明属性,因为属性=成员变量+setting方法+getting方法 @protocol NSCoding - (void...而NSArray对象调用mutableCopy方法时,mutableCopy方法会调用- (id)mutableCopyWithZone:(NSZone *)zone,得到可变的对象。

1.6K20

iOS 知识点回顾(三)

Tagged Pointer 五. copy和mutableCopy 六. OC对象的内存管理 七. AutoreleasePool自动释放池 八. 图片的解压缩到渲染过程 九....任务和队列不同组合方式的区别 同步和异步主要影响:能不能开启新的线程 同步:在当前线程中执行任务,不具备开启新线程的能力 异步:在新的线程中执行任务,具备开启新线程的能力 并发和串行主要影响...iOS平台,最高有效位是1(第64bit);Mac平台,最低有效位是1 Tagged Pointer优化NSNumber示例 五. copy和mutableCopy copy和mutableCopy...当调用alloc、new、copy、mutableCopy方法返回了一个对象,在不需要这个对象时,要调用release或者autorelease来释放它;想拥有某个对象,就让它的引用计数+1;不想再拥有某个对象...自动释放池的结构 __AtAutoreleasePool 实际是一个结构体,在内部首先执行objc_autoreleasePoolPush(),然后在调用objc_autoreleasePoolPop

69410

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

命名规则:如果不是自己生成并持有的方法,不得用alloc、new、copy、mutableCopy开头的方法名。...ARC规则 不能使用 retain/release/retain/autorelease 不能使用NSAllocateObject/NSDeallocateObject 须遵守内存管理的方法命名规则 不要显示调用...dealloc 使用@autoreleasepool 块替代 NSAutoreleasePool 不能使用区域(NSZone) 对象型变量不能作为C语言结构体(struct/union)的成员 显示转换...“id”和“void” 不要显示调用dealloc - (void)dealloc { [super dealloc]; } /** 这样会报错 */ 对象型变量不能作为C语言结构体(struct...注意:_objc_autoreleaseReturnValue函数会检查使用该函数的方法或函数调用方的执行命令列表,如果方法或函数的调用方在调用了方法或函数后紧接着调用_objc_retainAutoreleasedReturnValue

59550
领券