如何使用 Xcode 跟踪哪个项目增加了 iOS 中的内存?
Posted
技术标签:
【中文标题】如何使用 Xcode 跟踪哪个项目增加了 iOS 中的内存?【英文标题】:How to track which item increases the memory in iOS using Xcode? 【发布时间】:2014-08-26 08:03:43 【问题描述】:我有一个 ios 应用,有 5 个视图控制器
在调试模式下,它从 30mb 内存使用开始,然后当我使用应用程序并转到其他视图控制器时,它会增加 5 甚至更多。永远不要失望。
我使用 sqlite 数据库和 我使用单例类:
#import <Foundation/Foundation.h>
@interface LoggedinUser : NSObject
NSMutableArray *questionIDs;
+ (LoggedinUser *)sharedCenter;
@property (nonatomic,retain) NSString *email;
@property(nonatomic,retain)NSString *firmID;
@property (nonatomic,retain) NSString *name;
@property(nonatomic,retain)NSString *surname;
@property (nonatomic,retain) NSString *userTypeID;
@property(nonatomic,retain)NSString *firmName;
@property(nonatomic,retain)NSString *userID;
@property(nonatomic,retain)NSString *dbFileName;
@property(nonatomic,retain)NSString *answerdbFileName;
@property(nonatomic,retain)NSString *lastOrderIndex;
@property(nonatomic,retain)NSMutableArray *questionIDs;
@property(nonatomic,retain)NSString *programID;
@property(nonatomic,retain)NSString *merchantID;
@property(nonatomic,retain)UIViewController *myQuestionView;
@end
#import "LoggedinUser.h"
@implementation LoggedinUser
@synthesize userID,surname,name,userTypeID,email,firmID,firmName,dbFileName,answerdbFileName,lastOrderIndex,programID,questionIDs,merchantID,myQuestionView;
static LoggedinUser *sharedLoggedinUser = nil; // static instance variable
+ (LoggedinUser *)sharedCenter
if (sharedLoggedinUser == nil)
sharedLoggedinUser = [[super allocWithZone:NULL] init];
return sharedLoggedinUser;
- (id)init
if ( (self = [super init]) )
questionIDs = [[NSMutableArray alloc] init];
myQuestionView=[[UIViewController alloc] init];
return self;
+ (id)allocWithZone:(NSZone *)zone
return [self sharedCenter];
- (id)copyWithZone:(NSZone *)zone
return self;
-(void)dealloc
//[super dealloc];
@end
这可能是我的问题,但是当我在视图控制器中浏览时,我想跟踪哪个变量或哪个方法增加了内存。
注意:如果我在视图控制器上什么都不做,它永远不会增加。在我推送到另一个视图控制器后它会增加
它是一个 iOS 7 应用并使用 ARC
请给我一些想法,让我找到正确的方法来找到,如何跟踪变量和方法来找出问题所在
编辑:@Mutawe 这是我在统计中找不到对象列表的仪器屏幕截图?你能帮忙吗?
【问题讨论】:
【参考方案1】: 打开您的 Xcode 项目 选择可执行文件(如果需要) 按cmd+i
(个人资料)
在 Le Wizard 中选择“泄漏”工具(如果需要)
按 Return 开始分析
运行您的应用程序
在仪器中按“停止”
验证选择了“分配”工具
单击并按住名为“统计”的弹出按钮
选择对象列表项
在对象列表的记录中找到您感兴趣的分配
选择该分配/对象
在该分配的表格视图单元格中单击地址右侧的“详细箭头”
现在您可以看到与分配相关的所有事件(分配、空闲、引用计数操作)
按cmd+shift+e
了解更多详情
浏览此列表中的事件,找出您要寻找的不平衡。
【讨论】:
感谢您的详细回答,我编辑了我的问题。我找不到统计按钮和对象列表。我在我的问题中放了一个截图。你能帮忙吗?以上是关于如何使用 Xcode 跟踪哪个项目增加了 iOS 中的内存?的主要内容,如果未能解决你的问题,请参考以下文章