" 仪器用户指南"有这样的说法:
- 彩色复印图像.将青色叠加层放在Core Animation复制的图像上.
但这并不能解释为什么要复制图像.从一个复制的图像到另一个复制图像似乎没有明显的模式,尽管它是规则的和可重复的.
该文档目前甚至没有提到颜色点击绿色和红色小姐,但我想它可能有一些做CALayer
的shouldRasterize
财产.
有任何想法吗?
我试图在xcode 4中打开乐器,但却找不到办法.通常在Xcode 3中,我们会运行 - >运行性能工具...但我真的没有找到任何这样的事情在xcode 4中做..有人能告诉我如何做到这一点?
我观看了Apple的WWDC 2010视频,内容是使用Instruments进行高级内存分析,从中我可以找到很多常驻脏内存.我意识到拥有如此多的驻留脏内存是一件坏事(可能是我的应用崩溃了很多的解释......),但我不知道如何解决它.我应该在哪里看?
乐器向我展示了许多对我来说看起来像胡言乱语的潜在有用信息,例如:
% of Res Type Resident Size
18% VM_ALLOCATE (8192 pages) 32.00 MB
Run Code Online (Sandbox Code Playgroud)
这是"脏"类别 - 只有256 MB的设备上有32 MB的常驻脏内存,对吧?:)还有几个像这样的大块.我如何追溯到我的仪器代码?或者我应该忘记仪器并在我的代码中查找特定问题?
我刚刚从4.2更新到Xcode 4.3并且"仪器"不再存在.
我试图从Launchpad运行它,但被告知这是不可能的,因为Instruments在垃圾箱里.
Xcode 4.3卸载了4.2,但它似乎没有打扰安装新版本的Instruments.
我在OSX上使用Xcode来开发命令行C应用程序.我还想使用Instruments来分析和查找内存泄漏.
但是,在从仪器内启动应用程序时,我找不到显示控制台的方法.我也无法附加到正在运行的命令行进程(它退出时出错):
这是一个示例代码:
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <setjmp.h>
static sigjmp_buf jmpbuf;
void handler(int sig) {
char c[BUFSIZ];
printf ("Got signal %d\n", sig);
printf ("Deseja sair? (s/n) ");
fgets(c, sizeof(c), stdin);
if(c[0] == 's') {
exit(0);
} else {
siglongjmp(jmpbuf, 1);
}
}
int main(void) {
char buf[BUFSIZ];
signal(SIGINT, handler);
sigsetjmp(jmpbuf, 1);
while(1) {
printf(">>>");
fgets(buf, sizeof(buf), stdin);
printf ("Introduziu: %s\n", buf);
}
return(0);
}
Run Code Online (Sandbox Code Playgroud)
这是我启动Instruments后尝试连接到xcode中正在运行的进程时出现的错误:
[Switching to process 1475]
[Switching to process 1475]
Error while running hook_stop: …
Run Code Online (Sandbox Code Playgroud) 这可能是一个愚蠢的问题.
如何使用XCode 4中的仪器运行应用程序,例如Leaks?
我没有看到像过去那样的选项,而且我环顾四周,要么我在某处错过了,要么就在我面前.
谢谢
文档只是说它意味着"符号自称的时间",但这意味着什么?"#Self"是什么意思?
当我使用乐器时,如果"#Self"等于100,那么"Self"也是100.0.
在WWDC,Apple承诺将发布一款新的Instruments工具,用于在iOS上调试AutoLayout.它应该"稍后"发布.我在Xcode 10.0.0发行版中找不到它.我忽略了什么,或者Apple没有发布它吗?
有没有人成功在Xcode中设置自动化UIAutomation测试?
我正在尝试在我的Xcode项目中设置一个目标,该目标应该运行我准备的所有UIAutomation脚本.目前,此目标的唯一构建阶段是此运行脚本块:
TEMPLATE="/Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate"
MY_APP="/Users/Me/Library/Application Support/iPhone Simulator/6.0/Applications/564ED15A-A435-422B-82C4-5AE7DBBC27DD/MyApp.app"
RESULTS="/Users/Me/Projects/MyApp/Tests/UI/Traces/Automation.trace"
SCRIPT="/Users/Me/Projects/MyApp/Tests/UI/SomeTest.js"
instruments -t $TEMPLATE $MY_APP -e UIASCRIPT $SCRIPT -e UIARESULTSPATH $RESULTS
Run Code Online (Sandbox Code Playgroud)
当我构建此目标时,它会在几秒钟后成功,但脚本实际上并未运行.在构建日志中,我收到以下错误:
instruments[7222:707] Failed to load Mobile Device Locator plugin
instruments[7222:707] Failed to load Simulator Local Device Locator plugin
instruments[7222:707] Automation Instrument ran into an exception while trying to run the script. UIATargetHasGoneAWOLException
+0000 Fail: An error occurred while trying to run the script.
Instruments Trace Complete (Duration : 1.077379s; Output : /Users/Me/Projects/MyApp/Tests/UI/Traces/Automation.trace)
Run Code Online (Sandbox Code Playgroud)
我很确定,我的javascript和我的运行脚本都是正确的,因为如果我在bash中运行完全相同的仪器命令它按预期工作.这可能是Xcode中的一个错误吗?
我提出了一个视图控制器:
SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:navController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)
在呈现之前,设备会挂起3-4秒.我试图用仪器来诊断这个,但似乎大部分时间花在main
-
这是相同的配置文件,但系统库取消隐藏:
这些消息都不是我能识别的,所以我不确定如何开始调试我的性能问题.
我在别处读到我应该检查主代码是否在主线程上执行.但是,以下更改并未改进任何内容:
dispatch_async(dispatch_get_main_queue(), ^{
SCAAboutController2 *controller = [[SCAAboutController2 alloc] initWithNibName:nil bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
[self presentViewController:navController animated:YES completion:nil];
});
Run Code Online (Sandbox Code Playgroud)
我很快就没有关于如何进步的想法.我如何进一步调查,和/或可能是缓慢呈现的根本原因?
编辑
一些令人困惑的发现:
viewWillDisappear
在呈现控制器中没有添加任何内容.编辑2
我发现问题集中在我在主(呈现)控制器中添加的一系列布局约束.具体来说,我遍历一些子控制器(类型teamController
)并添加约束:
[self.browser addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:self.browser
attribute:NSLayoutAttributeWidth
multiplier:1
constant:0]];
Run Code Online (Sandbox Code Playgroud)
只有10个子控制器.同样奇怪:如果我使用以下代码,我就没有这样的问题了:
[self.browser.contentView addConstraint:[NSLayoutConstraint constraintWithItem:teamController.view
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:200]];
Run Code Online (Sandbox Code Playgroud)
我仍然非常困惑为什么这些约束会导致另一个模态的呈现挂起,以及为什么约束的一个变体表现出与另一个不同的显着不同.
instruments ×10
ios ×5
xcode ×5
iphone ×2
autolayout ×1
c ×1
cocoa-touch ×1
debugging ×1
ios4 ×1
macos ×1
objective-c ×1
performance ×1
xcode4 ×1
xcode4.3 ×1