我已经尝试了所有可能的字段,但无法找到调用函数的次数.
此外,我没有得到Self和# Self.这两个数字是什么意思?
问题
仪器的Time Profiler正在从我的应用程序中剥离除系统库之外的所有符号,尽管事实上我已经在Xcode的所有相关构建设置中禁用了这种行为 - 但仅在一台开发机器上.另一台开发机器正常运行.
描述
仪器的Time Profiler正在剥离除系统库之外的所有符号,尽管事实上我已经在Xcode的所有相关构建设置中禁用了这种行为 - 但这只发生在我的一台开发机器上.我已经运行OS X时,Xcode和仪器的同一版本二次开发的机器,每台机器使用具有相同构建设置,方案和其他配置相同的Xcode项目的相同副本,并且应用程序正在使用相同的异形测试设备(iPhone 4S与iOS 5的最新公开版本).
机器1
- Mac OS X
10.7.4 - Xcode 4.3.2(4E2002)
- 仪器4.3(4321)
机器2
- Mac OS X
10.7.4 - Xcode 4.3.2(4E2002)
- 仪器4.3(4321)
重现步骤
预期的行为
我自己的代码中的符号应该出现在两台机器上的Time Profiler中.
回归
我尝试了以下所有方法,但实际结果没有变化:
重新启动机器.
尝试其他Xcode项目
删除Xcode Organizer中所有项目的"派生数据".
重新标记仪器中的文档(在〜/ Library/blahBlahBlah中仔细选择正确的DSYM文件......)
最后的笔记
以下是示例项目的.zip文件的链接:Sample Project .zip
我正在使用ARC,并在循环中修改字符串时看到一些奇怪的行为.
在我的情况下,我使用NSXMLParser委托回调循环,但我看到使用演示项目和简单修改某些NSString对象的示例代码的相同的确切行为和症状.
您可以从GitHub下载演示项目,只需在主视图控制器的viewDidLoad方法中取消注释四个方法调用之一,即可测试不同的行为.
为简单起见,这是一个简单的循环,我已经陷入了一个空的单视图应用程序.我将此代码直接粘贴到viewDidLoad方法中.它在视图出现之前运行,因此屏幕为黑色,直到循环结束.
NSString *text;
for (NSInteger i = 0; i < 600000000; i++) {
NSString *newText = [text stringByAppendingString:@" Hello"];
if (text) {
text = newText;
}else{
text = @"";
}
}
Run Code Online (Sandbox Code Playgroud)
以下代码在循环完成之前还会保留内存:
NSString *text;
for (NSInteger i = 0; i < 600000000; i++) {
if (text) {
text = [text stringByAppendingString:@" Hello"];
}else{
text = @"";
}
}
Run Code Online (Sandbox Code Playgroud)
以下是这两个循环在Instruments中循环的方式,运行Allocations工具:

看到?逐渐稳定的内存使用,直到一大堆内存警告,然后应用程序自然死亡.
接下来,我尝试了一些不同的东西.我使用了一个实例NSMutableString,如下:
NSMutableString *text;
for (NSInteger i = …Run Code Online (Sandbox Code Playgroud) memory-management objective-c instruments nsstring automatic-ref-counting
我有一个UIView子类的子实例CAShapeLayer添加为子层的几个实例.
我正在UIBezierPath为这些层中的每个层设置更改动画,这看起来很棒并且性能很好,但是backboardd当我通过Instruments中的Activity Monitor运行它时,会在该过程中达到~90%的CPU.
如何获得有关此处发生的更多信息?backboardd是GPU上核心图形/核心动画的幕后渲染,对吗?是否支持在某处进行仪器的进一步调试?我可以用GCD做些喜欢加载的东西backboardd吗?
编辑:在将这个升级为与苹果公司的TSI后,他们已经确认这是这个动画CAShapeLayers的"预期行为".叹.他们确实提供了这个链接的建议,其中涉及不断暂停和取消暂停动画以模仿较低的帧速率.(因为它是每个关闭的DisplayLink锁定动画帧的计算backboardd)
-(void)pauseLayer:(CALayer*)layer {
CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = pausedTime;
}
-(void)resumeLayer:(CALayer*)layer {
CFTimeInterval pausedTime = [layer timeOffset];
layer.speed = 1.0;
layer.timeOffset = 0.0;
layer.beginTime = 0.0;
CFTimeInterval timeSincePause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - pausedTime;
layer.beginTime = timeSincePause;
}
Run Code Online (Sandbox Code Playgroud)
最后,漂亮的Apple技术指出动画帧率控制"会提出一个不错的API增强请求,作为一个" - 所以我正在制作一个,你也应该.:)
我在代码中的某个地方有一个僵尸对象,它在iOS 6.1上运行但在7中没有.
不幸的是,仪器不会与僵尸一起运行,它会弹出以下警告."僵尸只能在iOS 7或更高版本的设备上运行".
我真的不想下载旧版本的Xcode,因为互联网工作非常缓慢.
由于我的正常goto方法不可用,有什么一些提示/技巧可以找到这个僵尸的原因.
任何帮助将不胜感激.
要打开仪器,我们必须首先分析然后选择我们必须分析内存泄漏,分配,僵尸的模板.但是我仍然没有加载错误分配库,也无法看到堆栈跟踪.并且在应用程序中找不到泄漏的原因
正如其他链接中提到的解决方案,我正在使用模拟器(iOS7)和主动方案(iOS7)
Xcode版本:5.0.2版(5A3005)模拟器:iOS 7.0.3(111B508)Mac:OS X版本10.8.5
如果上述任何信息不正确,请原谅.请给出答案.谢谢
谁知道有色仪器调谐器最强大的算法?
我正在尝试写一个乐器调音器.我尝试了以下两种算法:
FFT创建一个welch周期图,然后检测峰值频率
我遇到了以下基本问题:
精度1:在FFT中,采样率,记录长度和箱尺寸之间的关系是固定的.这意味着我需要记录1-2秒的数据才能获得几美分的准确度.这不是我所谓的实时.
准确度2:自相关效果更好一些.为了获得几美分所需的精度,我必须引入样本的线性插值.
坚固性:如果是吉他,我会看到很多泛音.有些泛音实际上比弦乐产生的主音强.我找不到一种强大的方法来选择正确的字符串播放.
尽管如此,任何便宜的电子调谐器都比我的实施更强大.这些调谐器是如何实现的?
当我在Xcode中运行Project/Profile并选择" Zombies "时,应用程序在NSZombie detection启用了" " 的模拟器中运行.但是我该怎么想告诉我有问题呢?我看到的只是运行的分配工具和下面的统计数据.它实际上会在哪里显示Zombie检测到a?
在以前的Instruments版本中我没有问题,但现在(v6.2)由于某些原因Allocations不会列出我的任何应用程序的对象.我尝试过调试和发布模式:

注意,过滤器"VC"应该捕获所有ViewControllers.没有过滤器......

有任何想法吗?