Tag: 内存泄漏

内存泄漏drawInRect在iOS5.0.1上

我有以下代码片段,我用来缩放图像。 这是在一个循环中创build和消耗每次通过自动释放池。 此代码在iOS5.0的模拟器,iPad或模拟器上的iOS4.3中可以正常工作,但在iPad1上的iOS5.0.1上,在经过50-60次之后,drawInRect开始消耗永远不会释放的内存。 我一直从辅助线程调用这个,但是现在调用主线程上的缩放操作。 UIGraphicsBeginImageContext( newSize ); [image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)]; UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); 我做错了什么或者这是一个iOS5.0.1的错误? 更新:我已经尝试了很多testing。 我已经能够certificate,使用XCode 4.0编译的完全相同的代码在同一台iPad上运行良好。 使用XCode 4.2.1编译的相同代码会导致内存不足的情况。 这个缩放例程正在后台线程中调用。 我使用较低级别的核心graphics调用编写了不同的缩放例程。 它不会与XCode 4.0一起泄漏,但在使用XCode 4.2.1的应用程序时会泄漏。 在独立项目中运行的完全相同的例程和调用树在XCode 4.2.1上似乎不会泄漏(太多)内存。 我正等着从这个苹果的消息。 同时,我需要使用XCode 4.我唯一的安装镜像要求雪豹,这意味着我使用我的古老的5.5岁的机器。 谢谢 2012年1月更新这似乎只发生如果应用程序是从XCode内启动。 在iPad上启动的相同的可执行文件不会显示泄漏。 具有相同程序的不同应用程序不会显示泄漏。 我已经向苹果公司发布了一个错误报告,并向他们发送了一个重现问题的项目。 我不认为这个问题很快就能得到解决,但似乎并不像我原先想象的那么普遍。 更新6/2012尽pipe已经发送了苹果一个最小的项目,再现了这个问题,他们声称不能重现这个问题,并没有取得任何进展。

内存泄漏时使用CGImageCreateWithJPEGDataProvider

我使用仪器(泄漏)来检测我的应用程序的内存泄漏。 它有时会说在我的一个方法中有内存泄漏。 我不确定是否有泄漏,如何解决。 CGImageCreateWithJPEGDataProvider方法主要导致内存泄漏。 有时CGDataProviderCreateWithData也会导致内存泄漏。 但我不知道为什么。 A类的泄漏方法如下: – (ResultHolder *)decodeData:(UInt8 *) data withOffset:(int) offset { const int length = [IOUtilities byteArrayToIntWithData:data Offset:offset+18]; UInt8 *buffer = malloc(length*sizeof(UInt8)); memcpy(buffer, data+offset+22, length); // sometimes memory leak in this line CGDataProviderRef jpgDataProvider = CGDataProviderCreateWithData(NULL, buffer, length, freeData); // mainly memory leak in this line. CGImageRef image = CGImageCreateWithJPEGDataProvider(jpgDataProvider, NULL, […]

NSString中的内存泄漏stringWithUTF8String:启用ARC

在我的应用程序中,我启用了ARC。 但是在我的应用程序中,下面的行根据仪器给我内存泄漏。 它在ios 7.0中。 -(id)init{ variables = [[NSMutableArray alloc] init]; // Leak events = [[NSMutableArray alloc] init]; //Leak return self; } 更新 但在我的应用程序,如果我做下面的东西,它不显示任何泄漏。 但我不能将项目添加到variables。 -(id)init{ variables = [[[NSMutableArray alloc] init] copy]; // No Leak events = [[[NSMutableArray alloc] init] copy]; //No Leak return self; } – NSString *utfString =[NSString stringWithUTF8String:(const char *)attr->children->content];//Leak – -(NSObject*)createObjectForClass:(NSString*)className{ Class […]

在UIViewController被popup之后,MKMapView autorelease不会调用dealloc

我在类A中有以下代码: UIViewController *vc = [self viewControllerForItem:item]; 在我的应用程序委托viewControllerForItem方法返回一个UIViewController基于我的项目即 vc = [[[MyCustomViewController alloc] init] autorelease]; return vc; 然后我推视图控制器: [self.navigationController pushViewController:vc animated:YES]; 这个VC我试图推动一个MKMapView,我在dealloc方法插入一个日志语句,看看是否被调用。 在我的记忆中,增长速度非常快。 但是,当我推入VC后添加下面的代码: [vc release]; 我的MKMapView类调用dealloc方法。 当然,如果MKMapView类是我的应用程序委托返回的唯一类(或者我可以检查VC的类是否是我的MKMapView类),这将是一个简单的解决scheme。 不过,我想解决这个根本问题。 为什么在我的视图控制器上设置autorelease时,dealloc没有被调用? 即使在该vc上使用autorelease,我怎么可能将[vc release]添加到视图控制器? 谢谢 编辑: 这里有一些额外的信息。 我有我的应用程序委托viewControllerForItem类。 我将自动释放的对象返回到我的其他pipe理器类,然后我推视图控制器。 当我返回一个自动释放对象时,保留计数是否被搞乱了,然后把它推到其他类中? 这是当我推VC和mkmapview的didDissappear被调用时的backtrace / callstack: pushVC: ( 0 NewHampshire 0x00254cdf -[CustomViewController navigateToRowId:withLinkBehavior:animated:] + 2111 1 NewHampshire 0x002534c9 -[CustomViewController webView:shouldStartLoadWithRequest:navigationType:] + 841 […]

我该如何解决一个早期启动的应用程序,但现在是“由于内存压力而终止”?

我正在使用Xcode的iOS应用程序。 早些时候,我开始运行,达到了有限的function。 然后有编译失败声称原始样板生成的代码有语法错误。 将源代码复制到新项目中会遇到不同的问题。 现在,我可以编译并开始运行,但是在启动映像显示由于内存压力而closures了应用程序之前就已经说明了这一点。 总视觉资产大约是272M,可以在不影响graphics丰富度的情况下进行优化,目前为止,该计划的唯一领域是预计将会很大。 (资产可能或不可能保存在内存中,例如每个当前加载的图像都被填充,我的代码不会以编程方式访问任何加载图像。)并且在加载图像本身加载之前崩溃。 我如何解决这个内存问题? 我可能会减less处理图像的方式,但我怀疑还有另一个根本原因。 或者这是过度的内存消耗? 谢谢,

iOS 8只有使用UIAlertController或UIActionSheet的内存泄漏

当我在UIActionSheet或UIAlertController中执行以下操作时,我在模拟器中看到了iOS 8中的内存泄漏。 UIActionSheet在IOS 8中使用UIAlertController,所以问题是相关的。 showCameraAction在按下button时被调用。 我已经从委托方法中删除了所有的内容,并仍然在下面的情况下泄漏。 我是否以某种方式使用UIActionSheet? 我将不胜感激任何帮助解决这个问题。 相同的代码没有IOS 7泄漏(在模拟器中)。 -(IBAction)showCameraAction:(id)sender { UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"Photo From:" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Phone", @"Flickr", nil]; [actionSheet showInView:[[UIApplication sharedApplication] keyWindow]]; //also tried just showInView: self.view } //空 – (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { } 也尝试与UIAlertController,具有相同的结果: UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Photo From:" message:@"" preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *phoneAction = [UIAlertAction […]

UIDatePicker泄漏

我似乎有一个泄漏的UIDatePicker。 我已经注意到内存泄漏设置datePickerMode显示date和时间。 但是,我只是想显示date。 我相当肯定这是一个框架泄漏,因为当我注释掉几个UIDatePicker属性分配时,泄漏消失了。 此代码泄漏1个CGColor对象和1个UIDeviceRGBColor对象: datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]]; datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this datePicker.hidden = NO; datePicker.timeZone = [NSTimeZone systemTimeZone]; //leaks UIDeviceRGBColor datePicker.maximumDate = [NSDate date];//leaks UIDeviceRGBColor datePicker.autoresizingMask = UIViewAutoresizingFlexibleWidth; 通过评论文章报道的有罪,我没有泄漏: datePicker = [[UIDatePicker alloc] initWithFrame:[self detailViewRect]]; //datePicker.datePickerMode = UIDatePickerModeDate; //leaks CGColor when setting this datePicker.hidden = NO; //datePicker.timeZone […]

仪器在main.m中显示泄漏(Xcode 4.3.1)

我正在开发一个应用程序使用ARC当我的应用程序分析仪器内存泄漏时,它显示在以下function的泄漏: #import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } 这是否表示在我的代码中的其他地方的问题? 这是堆栈跟踪 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 […]

停止iOS 7 MKMapView从内存泄漏

我注意到我的应用程序泄漏内存,但如果我把MKMapView出内存问题消失。 为了testing这个理论,我做了一个简单的死了的项目,这个项目有一个视图,用一个MKMapView在视图中popup并popup并推送。 而已。 在视图控制器没有代码,通过故事板完成。 如果我来回地图视图,它开始大约3MB后,推动和popup视图与地图在这个约15倍的内存是230MB左右。 其他人看到这个? 看起来像一个很大的错误。 有没有一种不同的方式来使用MKMapView ,以防止泄漏这么多?

加载视图控制器后,应用程序运行缓慢,然后卸载大约15-20次

使用:Xcode 4.6故事板ARC模型inheritance到SecondViewController 我有一个应用程序,主要的ViewController加载一个新的veiwController时,设备旋转到右侧。 当应用程序启动时,一切都很好。 如果我旋转设备,然后回来卸载第二个视图控制器,约15-20倍的应用程序是非常长老。 我已经缩小了,它只发生在seconed视图控制器加载时,只有当我旋转设备的时间nunmber。 我也缩小了这是一个记忆问题。 我安装了一个应用程序,logging使用和可用的内存。 当我旋转设备多次时,我的记忆从400mb到900mb。 我正在尝试尽可能多地提供信息。 每个视图有8个NSTimers每秒钟触发。 有没有办法编程卸载视图,以确保被卸载? 我已经包含这个代码来确保加载和卸载: ` – (void)setView:(UIView *)aView {NSLog(@“>>> Entering%s <<<”, PRETTY_FUNCTION ); if (!aView) // view is being set to nil { NSLog(@"Should be unloading now"); } [super setView:aView]; NSLog(@"<<< Leaving %s >>>", __PRETTY_FUNCTION__); } 日志结果:2013-04-22 16:42:03.588 xxxxxxxx [xxxxxxx] >>>input – [GraphViewController setView:] <<< 2013-04-22 […]