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

每当我尝试将NSUserDefualts保存到NSMutableArray时,它就会崩溃

当尝试将NSUserDefualts保存到NSMutableArray时导致崩溃的原因可能是NSUserDefualts只能存储基本数据类型,而NSMutableArray是一个对象类型。NSUserDefualts是用于存储应用程序的偏好设置和配置信息的类,它提供了一种简单的方式来存储和检索数据。

解决这个问题的方法是将NSMutableArray转换为NSData类型,然后再存储到NSUserDefualts中。可以使用NSKeyedArchiver将NSMutableArray转换为NSData类型,然后使用NSUserDefualts的setObject:forKey:方法将NSData存储起来。

以下是一个示例代码:

代码语言:txt
复制
// 将NSMutableArray转换为NSData
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:yourArray];

// 存储到NSUserDefualts
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"yourKey"];
[defaults synchronize];

在这个示例中,yourArray是你要保存的NSMutableArray对象,"yourKey"是你给数据设置的键。

当需要从NSUserDefualts中检索NSMutableArray时,可以使用以下代码:

代码语言:txt
复制
// 从NSUserDefualts中检索数据
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"yourKey"];

// 将NSData转换为NSMutableArray
NSMutableArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];

这样,你就可以成功地将NSMutableArray保存到NSUserDefualts中了。

关于NSUserDefualts、NSMutableArray和NSData的更详细信息,你可以参考腾讯云的相关文档和产品介绍:

请注意,以上提供的链接是腾讯云相关产品和文档的示例,仅供参考。

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

相关·内容

iOS - 老生常谈内存管理(三):ARC 面世

如果管理不注意赋值对象的所有者,便有可能遭遇内存泄漏或者程序崩溃。这点在使用时应多加注意。...如果引用的对象被销毁,就会产生悬垂指针。 __autoreleasing用于表示通过引用(id *)传入,并在返回(autorelease)自动释放的参数。...迁移工具在MRC代码转换为ARC代码,无法确定该使用strong还是weak,所以默认使用strong。...尝试不要去思考ARCretains/releases调用的代码放在哪里,而是思考应用程序算法,思考对象的strong和weak指针、所有权、以及可能产生的循环引用。...Q: 当我继承一个使用了 NSCopyObject 的类,如 NSCell ,我需要做些什么? 没什么特别的。ARC会关注以前必须显式添加额外retain的情况。

2.1K10
  • 被鹅厂面怕了!

    这东西其实就是 TCP 的活机制,的工作原理我之前的文章写过,这里就直接贴下以前的内容。 ?...当 TCP 活的探测报文发送给对端, 对端会正常响应,这样 TCP 活时间会被重置,等待下一个 TCP 活时间的到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...在没有使用 TCP 活机制,且双方不传输数据的情况下,一方的 TCP 连接处在 ESTABLISHED 状态,并不代表另一方的 TCP 连接还一定是正常的。 那题目中的「进程崩溃」的情况呢?...一轮的超时时间都是倍数增长的,比如第一次触发超时重传是在 2s 后,第二次则是在 4s 后,第三次则是 8s 后,以此类推。 ?...在重传报文且一直没有收到对方响应的情况,先达到「最大重传次数」或者「最大超时时间」这两个的其中一个条件后,就会停止重传。 ---- 最后说句。 TCP 牛逼,啥异常都考虑到了

    55530

    字节一面:服务端挂了,客户端的 TCP 连接还在吗?

    如果tcp_retries设置为15,且 RTT 比较小,那么 RTO 初始值就约等于下限 200ms,这意味着需要 924.6 秒才能将断开的 TCP 连接通知给上层(即应用程序),一轮的 RTO...如果没有开启 TCP keepalive 机制,在服务端主机发送宕机后,如果客户端一直不发送数据,那么客户端的 TCP 连接一直保持存在,所以我们可以得知一个点,在没有使用 TCP 活机制,且双方不传输数据的情况下...当 TCP 活的探测报文发送给对端, 对端会正常响应,这样TCP 活时间会被重置,等待下一个 TCP 活时间的到来。如果对端主机崩溃,或对端由于其他原因导致报文不可达。...,如果连续几个探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核错误信息通知给上层应用程序。...=75 net.ipv4.tcp_keepalive_probes=9每个参数的意思,具体如下:tcp_keepalive_time=7200:表示活时间是 7200 秒(2小),也就 2 小时内如果没有任何连接相关的活动

    2.1K30

    字节一面:服务端挂了,客户端的 TCP 连接还在吗?

    如果tcp_retries设置为15,且 RTT 比较小,那么 RTO 初始值就约等于下限 200ms,这意味着需要 924.6 秒才能将断开的 TCP 连接通知给上层(即应用程序),一轮的 RTO...如果没有开启 TCP keepalive 机制,在服务端主机发送宕机后,如果客户端一直不发送数据,那么客户端的 TCP 连接一直保持存在,所以我们可以得知一个点,在没有使用 TCP 活机制,且双方不传输数据的情况下...当 TCP 活的探测报文发送给对端, 对端会正常响应,这样 TCP 活时间会被重置,等待下一个 TCP 活时间的到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...,如果连续几个探测报文都没有得到响应,则认为当前的 TCP 连接已经死亡,系统内核错误信息通知给上层应用程序。...=75 net.ipv4.tcp_keepalive_probes=9 每个参数的意思,具体如下: tcp_keepalive_time=7200:表示活时间是 7200 秒(2小),也就 2

    1.6K20

    透彻理解 NSNotificationCenter 通知

    本篇文章主要是梳理NSNotificationCenter的特性和值得注意的地方,并且在后面结合对其特性的分析手动利用代码来实现。...由此看来,如果当我们不是百分之百确认通知的发送队列是在主队列中,我们最好加上如下代码从而对我们的UI进行处理。...有过比较长开发经验的同学应该都有过,没有及时的移除通知而导致意外崩溃的情况。...注意上面的代码中,我[self _removeObserver:observer];注释掉了,意味着该方法已经被我截取了,我们再向该“移除通知未遂”的响应者observer发送通知,直接崩溃。...需要使用到的强引用属性;四是observerId属性会比较陌生,的作用大家可以先不管,之后会有用处。

    2.3K70

    iOS内存管理-基本概念整理

    当我们通过alloc、retain等方法持有对象后,也必须有相应的release或者autorelease将其释放。...4.非自己持有的对象无法释放 在应用程序中释放非自己持有的对象就会造成崩溃,使用代码演示如下: //情况1:释放完不再需要的对象后再次释放,访问了已经废弃的对象而崩溃!...这其中就包括以下的几种情况: 编译器检查方法名是否以alloc/new/copy/mutableCopy开始,如果不是则自动返回对象注册到autoreleasepool; 访问附有__weak修饰符的变量...情况1:__bridge转换 /* MRC代码下,id变量直接强制转换void*正常,但ARC下报错 id obj = [[NSObject alloc] init]; void *p = obj;...如果管理不注意赋值对象的所有者,就容易产生野指针错误导致程序崩溃

    1.1K31

    ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(下)

    }] setNameWithFormat:@"[%@] -flatten", self.name]; }复制代码 flatten操作必须是对高阶信号进行操作,如果信号里面不是信号,即不是高阶信号,那么就会崩溃...3. flatten: flatten:操作也必须是对高阶信号进行操作,如果信号里面不是信号,即不是高阶信号,那么就会崩溃。...那么就把当前的信号缓存到queuedSignals数组中。...如果maxConcurrent < 0,那么这里初始化就会崩溃。 如果maxConcurrent = 0,会发生什么?那么flatten:就退化成flatten了。 ?...虽然这个方法可以监听到发送结束的状态,但是也尽量不要使用,因为的实现调用了firstOrDefault: success: error:方法,这个方法里面有大量的锁的操作,一不留神就会导致死锁。

    97740

    ReactiveCocoa 中 RACSignal 所有变换操作底层实现分析(下)

    }] setNameWithFormat:@"[%@] -flatten", self.name]; } flatten操作必须是对高阶信号进行操作,如果信号里面不是信号,即不是高阶信号,那么就会崩溃...3. flatten: flatten:操作也必须是对高阶信号进行操作,如果信号里面不是信号,即不是高阶信号,那么就会崩溃。...那么就把当前的信号缓存到queuedSignals数组中。...如果maxConcurrent < 0,那么这里初始化就会崩溃。 如果maxConcurrent = 0,会发生什么?那么flatten:就退化成flatten了。...虽然这个方法可以监听到发送结束的状态,但是也尽量不要使用,因为的实现调用了firstOrDefault: success: error:方法,这个方法里面有大量的锁的操作,一不留神就会导致死锁。

    12210

    ElasticSearch 持久化变更

    启动,Elasticsearch 将使用最后一个提交点从磁盘中恢复已知的段,然后重新执行 Translog 中的所有操作,以添加最后一次提交后发生的更改。...当你试着通过ID查询、更新、删除一个文档,在尝试从相应的段中检索文档之前,首先检查 Translog 来查看最近的变更。这意味着总是能够实时地获取到文档的最新版本。...当 Elasticsearch 尝试恢复或重新打开一个索引,需要重新执行 Translog 中所有的操作,所以如果 Translog 中日志越短,恢复越快。 3. Translog有多安全?...在文件被 fsync 到磁盘前,被写入的文件在重启之后就会丢失。...比如,写入的数据被缓存到内存后,再5秒整体执行一次 fsync。

    1.2K40

    iOS 客户端动图优化实践

    端内动图展示的问题以及优化结果 长期以来, 部分机型浏览 Q 音的图文流很容易闪退, 端内其他业务也存在不少动图相关的崩溃上报记录....基于上述的问题, 应该逐帧加载思路应用到端内, 在动图加载到内存, 只从二进制数据中解码第一帧; 然后在 CADisplayLink 触发解析当前需要展示的帧, 同时合理地使用帧缓存, 避免上述.... 4.3.4 在解码失败的时候尝试手动释放内存 在 App 运行中, 部分 API 如果无法申请到内存会发生 NSMallocException 崩溃, 崩溃描述为”Failed to grow buffer...图片一般是内存消耗的大户, 因此可以在图片解码失败, 主动尝试释放图片内存缓存, 正在使用的图片不会被释放, 未被使用的图片先释放掉以腾出内存, 从而规避内存不足造成崩溃. 4.4 其他优化措施 4.4.1...而在此次优化中, 我 maxMemoryCost 值设置成最大可用内存的 30%(线上 ABT 得出), 内存曲线就会很平缓, 能有效减少 OOM.

    5.3K40

    面试没有回答上来的一道题:一致性哈希

    我们发现,当我们增加了一个机器之后,之前几乎所有的缓存都失效了,图片明明存在其中一台机器了,可是因为计算出了不一样的哈希值,总是跑到没有保存自己的机器上去寻找自己的下落,当然,这样的寻找肯定会落空的。...于是,当我们上线第四台机器的那一刻,我们的所有缓存几乎都失效了,后台存储图片的服务突然收到了大量因为缓存失效导致的访问,压力山大,直接崩溃了 ... 好容易缓过劲,我们细思极恐。...如果每次增加或者减少服务器,就会导致所有缓存失效,这对我们的后台服务简直是巨大的挑战,而这真的是不能避免的吗? 于是,我们引入了一致性哈希,来解决我们的问题。...于是,当我尝试寻找A图片,发现D2已经完蛋了,此时,我们会继续顺时针往下找,直到找到D1机器,然后,A图片重新缓存到D1机器上去。...只是当我尝试寻找D图片,由于顺时针下去遇到的第一个服务器节点是D4,而此时D4刚起步,啥都没有,于是D图片缓存失败,只好去后端服务器把D图片重新缓存到D4服务器。

    33210

    iOS 复制知识点总结

    1、系统对象的复制 不管是集合类对象,还是非集合类对象,接收到copy和mutableCopy消息,都遵循以下准则: copy返回immutable对象;所以,如果对copy返回值使用mutable对象接口就会...我们继续往下, mutableCopy NSMutableArray *array = [NSMutableArray arrayWithObjects:[NSMutableString stringWithString...NSObject @property (nonatomic, assign) NSInteger age; @property (nonatomic, copy) NSString *name; @end 然后尝试调用...我们复制副本的代码换成如下: Person *person2 = [person1 mutableCopy];//复制副本 再次运行程序,程序同样崩溃了,并输出去以下错误信息: [Person mutableCopyWithZone...copy指示符,该指示符置顶调用setName:方法(通过点语法赋值,实际上是调用对应的setter方法),程序实际上会使用参数的副本对name实际变量复制。

    673110

    TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?

    Transfer-Encoding Transfer-Encoding是指传输编码,在上面的问题中,当服务端无法知道实体内容的长度,就可以通过指定Transfer-Encoding: chunked来告知浏览器当前的编码是数据分成一块一块传递的...对上述流程总结: 当网络两端建立了TCP连接之后,闲置(双方没有任何数据流发送往来)了tcp_keepalive_time后,服务器就会尝试向客户端发送侦测包,来判断TCP连接状况(有可能客户端崩溃、强制关闭了应用...如果尝试tcp_keepalive_probes次,依然没有收到对方的ack包,则会丢弃该TCP连接。TCP连接默认闲置时间是2小,一般设置为30分钟足够了。...当 TCP 活的探测报文发送给对端, 对端会正常响应,这样 TCP 活时间会被重置,等待下一个 TCP 活时间的到来。 如果对端主机崩溃,或对端由于其他原因导致报文不可达。...TCP 的 Keepalive 也叫 TCP 活机制,该功能是由「内核」实现的,当客户端和服务端长达一定时间没有进行数据交互,内核为了确保该连接是否还有效,就会发送探测报文,来检测对方是否还在线,然后来决定是否要关闭该连接

    1.2K20

    HTTP 长连接和短连接

    如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器遇到这样一个Web资源,就会建立一个HTTP会话。...首先说一下TCP/IP详解上讲到的TCP活功能,活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。...客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后活定时器复位。 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。...客户主机崩溃并已经重新启动。服务器收到一个对其活探测的响应,这个响应是一个复位,使得服务器终止这个连接。...不过这里存在一个问题,存活功能的探测周期太长,还有就是只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接活功能就不够使了。

    3.4K90

    内存管理说明白点

    除了这些方法之外的对象,自己是无法释放的,还有就像书中写的例子一样,已经realese掉的对象你在执行其他操作,就是释放非自己持有的对象,就会造成程序崩溃。        ...      2、我们的Block是持有__block对象的,这个不必多说       3、  __block id tmp = self  这句代码就让tmp变量持有了 TestObject,在进入下面Block...(2)、无论ARC是否有效,只要对象的所有者不在持有对象的时候该对象就会被废弃,对象被废弃,不管ARC是否有效,都会调用对象的dealloc方法,在ARC有效的时候就不在显式的调用dealloc方法。...ARC环境中不需要我们自己再去写 autorelease NSMutableArray * array = [NSMutableArray arrayWithCapacity:1]; NSMutableArray...__unsafe_unretained修饰符相近,甚至更低,如果管理不善,没有注意渎职对象的所有者,就很容易因为野指针而造成程序崩溃        2、"__bridge_retained 转换类型",

    44220

    长连接和短链接的区别

    如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器遇到这样一个Web资源,就会建立一个HTTP会话。...首先说一下TCP/IP详解上讲到的TCP活功能,活功能主要为服务器应用提供,服务器应用希望知道客户主机是否崩溃,从而可以代表客户使用资源。...客户的TCP响应正常,而服务器也知道对方是正常的,服务器在两小时后活定时器复位。 客户主机已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,客户的TCP都没有响应。...客户主机崩溃并已经重新启动。服务器收到一个对其活探测的响应,这个响应是一个复位,使得服务器终止这个连接。...不过这里存在一个问题,存活功能的探测周期太长,还有就是只是探测TCP连接的存活,属于比较斯文的做法,遇到恶意的连接活功能就不够使了。

    1.9K30

    扒虫篇-崩溃日志解读及Crash收集

    代码如下 @try { //如果@try中的代码会导致程序崩溃就会来到@catch //一个nil插入到可变数组中,这行代码肯定有问题 [arrayM addObject...什么是崩溃日志,从哪里能得 iOS设备上的应用闪退,操作系统会生成一个崩溃报告,也叫崩溃日志,保存在设备上。 崩溃日志上有很多有用的信息,包括应用是什么情况下闪退的。...而.dSYM文件中一条崩溃信息也有一个单独的UUID,用来和程序的UUID进行校对。这些UUID一致才可以解析出当前APP的崩溃信息....: 崩溃信息持久化在本地,下次程序启动崩溃信息作为日志发送给开发者。...,崩溃信息写入本地,APP再次启动崩溃信息上传到我们的服务器。

    2.8K10
    领券