问题标签 [foundation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
235 浏览

objective-c - stringWithFormat:具有未知数据类型

我正在制作一个框架,我有这个代码(conditions是一个 NSDictionary):

如果value是 NSString,则应添加引号,否则不应添加代码。但是,如果不是 NSString,我不知道 的数据类型value,因为它可能是 NSNumber、NSInteger、int、float、double 等......我不能只使用%@或者%d但我确定有人知道这个怎么做?谢谢。

0 投票
1 回答
183 浏览

objective-c - 紧接着自动释放的保留有什么意义?

我正在查看一些开源代码,并试图理解为什么作者以特定的方式做某事。

该类是一个包装器,NSArray用于使用 push、pop 等创建堆栈数据结构。

一种方法是topObject返回堆栈上最顶层的对象,其实现是:

保留后立即自动释放是什么意思?

我最初的反应是,这会阻止分析器警告内存泄漏,但我在没有保留/自动释放的情况下进行了分析,仍然没有警告。

查看生命周期,将创建一个对象,将其推送到堆栈并释放,因此堆栈拥有该对象(底层数组将在添加时保留它)。

所以我不明白这里使用保留/自动释放......

0 投票
1 回答
1322 浏览

objective-c - 将 NSData 转换为 NSString 并忽略空字节?

我需要将 NSData 对象转换为 NSString。它本来就是胡言乱语,但我需要它来调试。

当我使用 NSString 的 initWithData 时,它会因为数据有 NULL 字节而中断。如何让它忽略空字节并获得正确的字符串?

0 投票
1 回答
3927 浏览

objective-c - NSMutableSet addObject

我有一个包装NSMutableSet对象的类,我有一个实例方法,可以将对象(使用该addObject:方法)添加到NSMutableSet.

这很好用,但我闻到了性能问题,因为在containsObject:将对象添加到集合之前我明确调用的方法内部。

三部分问题:

  1. containsObject:在将对象添加到集合之前是否需要调用?
  2. 如果是这样,那么我应该使用什么实际方法,containsObject或者containsObjectIdenticalTo:
  3. 如果不是这样,什么contains方法会被调用addObject:?这对我很重要,因为如果我将一个对象传递给containsObject:它会返回 true,但如果我将它传递给containsObjectIdenticalTo:它会返回 false。
0 投票
2 回答
789 浏览

objective-c - 使用自动释放时,它实际上是什么时候释放的?

有时我想知道什么时候会自动发布。我在各种对象的dealloc中添加了一个NSLog,但我找不到任何有用的东西。

使用自动释放时什么时候释放?它是不可预测的,还是有一些额外的线程在运行?谢谢。

0 投票
1 回答
2275 浏览

ios - 如何将 HTML 映射到 iOS 中的 NSAttributedString

由于 NSAttributedString initWithHTML addtion 仅适用于 Mac OS 而不是 iOS。

0 投票
2 回答
1699 浏览

objective-c - *应该*崩溃的简单Objective-C过度发布不会崩溃。为什么?

要么我的调试器坏了,要么我不理解一些基本的东西。

我在一个非常基本的命令行程序中有一些非常基本的代码应该崩溃。但是,它并没有崩溃。

日志语句打印“长度:5”,就像您期望的有效字符串一样。但是,到那时字符串应该被释放并且exec_bad_access应该抛出一个错误。

我已经在附加调试器和未附加调试器的情况下尝试了此代码 - 两者都给出相同的结果。我还启用了(和禁用)NSZombie,这似乎没有任何效果(我最初认为这是问题所在,因为NSZombie对象永远不会被释放 - 但它仍然不会因NSZombie禁用而崩溃)。

我在我的本地.gdbinit文件中设置了断点来中断诸如-[NSException raise]和之类的东西objc_exception_throw。我还在许多方法上设置了断点NSZombie以捕获它们。

设置了这些断点并启用了 NSZombie,我应该会得到类似[NSString length]: message sent to deallocated instance 0x100010d39打印到控制台的内容,但我看不到这一点。我看到NSLog打印长度为5。

我在其他类(例如NSURL和)中看到了类似的行为NSNumber。但是某些类会按预期崩溃,例如NSErrorNSObject

这与类集群有关吗?他们在内存管理方面不遵循相同的规则吗?

如果类集群与这个问题无关,那么我能看到的唯一其他共同特征是不会以这种方式崩溃的类都是与 Core Foundation 对应的免费桥接的。这可能与它有关吗?

0 投票
1 回答
1420 浏览

iphone - 如何在 iPhone 上实现分块的 http 请求?

目前我正在尝试使用 NSMutableURLRequest,将 HTTPBody 设置为我的自定义编写的 NSInputStream,它提供了这个块。

如果不是因为 NSMutableURLRequest 一直要求我在我的 NSInputStream 类中实现越来越多的方法,这会很好。首先它要求我实现 - streamStatus: 这很容易实现,但是现在它要求 _scheduleInCFRunLoop:forMode:...

基本上我是从算法中生成数据,并希望通过分块请求将其发送到服务器。

这是代码:

0 投票
1 回答
388 浏览

objective-c - 我可以将相同的对象添加到两个不同的数组吗?

这是否有效:

我的钱是肯定的,因为我只是添加对同一个对象的引用,还是我错了?

0 投票
2 回答
1356 浏览

iphone - 将 KVO 与 NSOperationQueue 一起使用时更改字典值错误?

我正在研究“更多 iPhone 3 开发”的并发章节中的一个示例,并且无法让 KVONSOperationQueue按预期工作。我创建一个NSOperationQueue并使用以下方法观察它的operations数组:

当第一个NSOperation被添加到队列中时,我希望它被添加到它的底层operations数组(iOS 文档说它是 KVO 兼容的),因此,在更改字典中,找到一个映射 from NSKeyValueChangeKindKeyto NSKeyValueChangeInsertion,以及一个映射 fromNSKeyValueChangeNewKey添加到NSOperation. 但我没有看到任何价值NSKeyValueChangeInsertion

我知道调试器是专业的,但是为了在这里复制一些有用的东西,我开始了我的观察者方法:

那打印:

SquareRootOperation只是我适当NSOperation覆盖的子类,并且只是项目名称。)但请注意,该方法在插入单个操作时被调用两次,并且两次都使用 kind 值 1,即not 。此外,似乎是数组本身,而不是添加的项目。mainStalledNSKeyValueChangeSettingNSKeyValueChangeInsertionnewValueoldValue

有任何想法吗?谢谢!