我正在开发一个iPhone应用程序,到目前为止一切正常.我可以在模拟器中构建和启动应用程序.但是,当我现在用仪器启动应用程序时,我得到了错误:
Dyld Error Message:
Symbol not found: _CFXMLNodeGetInfoPtr
Referenced from: /System/Library/Frameworks/Security.framework/Versions/A/Security
Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索,但没有找到解决方案.
希望有人可以帮助我.谢谢
应用程序安装,仪器启动,但仪器中的下拉表示选择目标,应用程序永远不会启动.控制台说
6/14/11 2:36:22 PM Instruments[1951] XRMobileDeviceException while performing application lookup on device : (null)
Run Code Online (Sandbox Code Playgroud)
设备是iOS 4.3.3,定期构建和运行工作,Xcode没有警告.简介只是不起作用.尝试清理构建,重新启动Mac OS和设备.仍然没有去!
我有一个应用程序,我添加了很多动画.该应用程序还使用"iPhone睡眠防护器"播放静音.从那时起,我注意到电池消耗增加了4倍!我想找到一种方法来分析功耗(我认为我在仪器中看到了一个选项)来找到并消除有问题的方法.
我会从哪里开始寻找这样的信息?目前,我将电话留在桌面上约3小时,以记录随着时间的推移功耗.如果连续运行我的应用程序,有没有更好的方法来预测应用程序何时会耗尽电量?
一个额外的问题:状态栏中显示的电池剩余百分比是线性的还是在电池寿命结束时有一些非线性?
编辑:我在xcode>产品>配置文件> CPU>能源诊断中找到了"电源"预设.它看起来并不完美,因为功耗水平始终为0/20.但它确实告诉我在应用程序前景,图形和音乐上花费了多少CPU时间!
现在我不知道如何管理CPU电源,运行CPU的能耗是否超过30%?直观地感觉它应该......
谢谢!
所以我正在使用递归块.我理解,对于要递归的块,它需要以__block关键字开头,并且必须将其复制,以便将其放在堆上.但是,当我这样做时,它显示为仪器中的泄漏.有谁知道为什么或如何绕过它?
请注意,在下面的代码中,我已经引用了许多其他块,但它们都不是递归的.
__block NSDecimalNumber *(^ProcessElementStack)(LinkedList *, NSString *) = [^NSDecimalNumber *(LinkedList *cformula, NSString *function){
LinkedList *list = [[LinkedList alloc] init];
NSDictionary *dict;
FormulaType type;
while (cformula.count > 0) {
dict = cformula.pop;
type = [[dict objectForKey:@"type"] intValue];
if (type == formulaOperandOpenParen || type == formulaListOperand || type == formulaOpenParen) [list add:ProcessElementStack(cformula, [dict objectForKey:@"name"])];
else if (type == formulaField || type == formulaConstant) [list add:NumberForDict(dict)];
else if (type == formulaOperand) [list add:[dict objectForKey:@"name"]];
else if (type == formulaCloseParen) {
if (function){ …Run Code Online (Sandbox Code Playgroud) objective-c instruments objective-c-blocks automatic-ref-counting
我正在使用ARC开发应用程序当在仪器中分析我的应用程序以进行内存泄漏时,它会在以下函数中显示泄漏:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
Run Code Online (Sandbox Code Playgroud)
这是否表明我的代码中的其他地方存在问题?
这是堆栈跟踪
0 libsystem_c.dylib malloc
1 libsystem_c.dylib strdup
2 libnotify_sim.dylib token_table_add
3 libnotify_sim.dylib notify_register_mach_port
4 libnotify_sim.dylib notify_register_dispatch
5 CoreFoundation _CFXNotificationRegisterObserver
6 CoreFoundation CFNotificationCenterAddObserver
7 UIKit -[UIScrollView(Static) _startTimer:]
8 UIKit -[UIScrollView _endPanWithEvent:]
9 UIKit -[UIScrollView handlePan:]
10 UIKit _UIGestureRecognizerSendActions
11 UIKit -[UIGestureRecognizer _updateGestureWithEvent:]
12 UIKit -[UIGestureRecognizer _delayedUpdateGesture]
13 UIKit ___UIGestureRecognizerUpdate_block_invoke_0541
14 UIKit _UIGestureRecognizerApplyBlocksToArray
15 UIKit _UIGestureRecognizerUpdate
16 UIKit -[UIWindow _sendGesturesForEvent:] …Run Code Online (Sandbox Code Playgroud) 我正在编写一个自动分析系统,以便在我的应用程序中分析不同的GPU密集型屏幕.我一直在尝试使用'XCode Instruments',使用'OpenGL ES Driver'仪器来捕获gpu使用数据.
我的自动化系统从命令行运行Xcode Instruments,命令行运行App,配置文件并捕获数据,并将数据写入".trace"文件.
我现在希望能够打开跟踪文件,并使用我的自动分析系统读取跟踪数据,以便我可以通知App开发人员应用程序的各个部分如何执行.
但是我找不到任何方法来读取跟踪文件.它似乎是包含各种目录的包,并且埋没在.zip文件中似乎包含一些二进制数据.如何解析此文件中的数据?
仪器系统看起来相当复杂,我很惊讶它访问它产生的跟踪数据有多难.
有谁知道如何解析跟踪文件?
我目前正在使用XCode 4.6.1
当我尝试在iOS 5设备上运行UI Automation脚本时,我收到以下错误:
"尝试运行脚本时发生错误."

相同的脚本在模拟器或iOS 4.3.3设备上运行完美.
我怎么解决这个问题?
我正在使用XCode 4.2.1中的Instruments来查找一些内存泄漏.我发现了一个非常奇怪的(至少对我而言)内存泄漏:(该函数values_table_get_value返回一个double,并且output = stdout)

这两个问题是:它是真正的内存泄漏吗?我该如何清理它?(fprintf格式%.3f错了double?
为了表明泄漏是在fprintf中,我将函数的返回值更改为5.0:

并将返回值移动到临时变量:

更确切地说,这是一张asm代码的图片,显示泄漏是:

我做了一个非常简单的测试:使用sprintf+ 打印fprintf,但是我在sprintf上得到了泄漏:

我也尝试printf直接使用,我得到它的泄漏.
我真的认为问题在于格式.
最后的尝试,表明没有任何与我的功能相关的东西:

只是为了检查,我用valgrind执行:( values_table_print是函数名)
valgrind --leak-check=full --show-reachable=yes ./leastsquares

我的软件版本:valgrind --version:valgrind-3.7.0 gcc --version i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1(基于Apple Inc. build 5658)(LLVM build 2336.1.00 )
我试图找出我的应用程序放弃了内存的位置以及我看到的标记为的所有资源heap shot.
但是我只有一个标记生成按钮.我应该在哪里找到堆射击按钮?或者只是改变了.
对不起,我是iOS新手.
我试图清理我的应用程序从内存泄漏,我有一些问题了解这一点
为什么Request.serializeResponseJSON在我推出应用程序30秒后调用Alamofire功能:我没有触摸任何东西或导航到任何地方,屏幕是静态的.
它为什么泄漏?
为什么我的代码泄漏了?
屏幕加载后,我得到相同的泄漏.
到目前为止我尝试过的:
Autoreleasepool;
以各种可能的方式附加和初始化数组;
将所有变量(class,func)更改为可选/不可选/弱;
初始化课程UIViewController;
在主线程中初始化类;
在互联网上搜索这些问题.
我发现,使用Xcode内存工具,它以某种方式连接 _ContiguousArrayStorage,但我不明白它是如何以及实际上是什么.

我不知道这里有什么问题.任何提示将非常感激.
以下是所有相关代码:我的一般API请求
public func requestWithLocation(_ httpmethod: Alamofire.HTTPMethod, URL: String, parameters: [String: AnyObject]?, completionHandler: @escaping CompletionHandler) -> (){
var header: HTTPHeaders = [:]
var location: [String: Double] = [:]
let locationManager = CLLocationManager()
if (CLLocationManager.authorizationStatus() == .authorizedWhenInUse
|| CLLocationManager.authorizationStatus() == .authorizedAlways) && locationManager.location != nil {
location = [
"lon" : locationManager.location!.coordinate.longitude,
"lat" : locationManager.location!.coordinate.latitude
]
}
if User.sharedInstance.token != "" { …Run Code Online (Sandbox Code Playgroud) instruments ×10
ios ×6
iphone ×4
memory-leaks ×3
xcode ×3
alamofire ×1
c ×1
heap ×1
ios4 ×1
memory ×1
objective-c ×1
opengl-es ×1
profiling ×1
swift ×1
valgrind ×1