Tag: 内存pipe理

Objective-C指针/内存pipe理问题

我正在testing下面的代码。 在接口文件中声明ffv。 ffv = [[FullFunctionView alloc] initWithFrame:self.view.bounds]; NSLog(@"%i", [ffv retainCount]); // prints 1 [self.view insertSubview:ffv belowSubview:switchViewsBtn]; NSLog(@"%i", [ffv retainCount]); // prints 2 [ffv release]; // you can release it now since the view has ownership of ffv NSLog(@"%i", [ffv retainCount]); // prints 1 if (ffv == nil) NSLog(@"ffv is nil"); // "ffv is nil" is […]

如何find并解决崩溃的原因

我向应用程序商店提交了一个应用程序,因为: “我们发现你的应用程序在运行iOS 6.1.2的iPhone 5上崩溃,这不符合App Store评论指南。 我们的应用程序崩溃了: 当用户点击login到应用程序时,会产生崩溃。 这发生在您的应用程序被使用时: 在Wi-Fi上 在蜂窝networking上 如果使用的内存太多,您的应用程序可能会遇到此问题。 要了解有关iOS内存使用情况以及如何跟踪内存使用情况和泄漏情况的更多信息,请参阅“内存使用性能指南”。 我无法在我身边再次触发崩溃。 我使用分配工具来分析我的应用程序,并看到我的活动字节从未超过12MB。 泄漏仪器,我发现我有一些泄漏(都在第三方来源),但他们是非常小的,不应该有应用程序崩溃..我不知道该怎么做.. 由于使用太多的内存,应用程序真的崩溃了吗? 会有另一个原因吗? 我应该如何解决这个问题并解决问题? 编辑 – 附上崩溃日志 看看这个 &看起来好像使用ASIHTTPRequest框架导致崩溃一些如何,但只能在临时或分布构build,这使得debugging更令人头疼。 这是真的吗? 我应该改用AFNetworking吗?

一旦closures,从UIWebView释放内存/ cookie /caching

我有一个UIViewController ,其中包含一个UIWebView 。 我使用UIViewController中的UIWebviewlogin到Facebook的网站,然后我点击完成,这将closures视图控制器,我想这将释放视图控制器。 但是当我再次打开UIWebview(没有退出应用程序,甚至在终止应用程序之后),网页视图加载后仍然login到Facebook。 我应该如何发布Web视图,以便每次点击完成并返回到Web视图时,Web视图将始终像“全新”一样,而不是login到之前login过的任何网站。 – (void)viewDidLoad{ NSLog(@"webView viewDidLoad called"); appDelegate = (LoginDBAppDelegate *)[[UIApplication sharedApplication] delegate]; loginObj = [appDelegate.loginArray objectAtIndex:currentSelectedRow]; myWebView.delegate = self; [super viewDidLoad]; [self showWebView]; } -(void)showWebView{ NSLog(@"webView showWebView called"); NSURL *url = [NSURL URLWithString:loginObj.loginURL]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [myWebView loadRequest:request]; } -(IBAction)done_Clicked:(id)sender{ NSLog(@"webView Done_Clicked"); //dismiss the controller [self.navigationController dismissModalViewControllerAnimated:YES]; } […]

由于CoreAnimation和CG图像的脏内存

我在我的应用程序与脏内存大小有问题,并希望清除脏内存。 我的应用程序越来越大。 但主要的问题是CoreAnimation和CG Imagetypes。 Memory Tag 70通过我的Assync Image Load View清除。 如何从脏内存清除CoreAnimation和CG图像? 57%的居民脏记忆对我来说似乎有点高。

UINavigationController的替代品

我正在开发一个应用程序,类似于“select你自己的冒险”的书的结构,有很多的多媒体内容(主要是照片和video)。 每个“页面”是一个ViewController ,用户必须在其中完成一个谜题或其他任务才能进入下一个任务。 我正在创build一个UINavigationController ,并将每个新的ViewController放在堆栈的顶部。 但是我担心有内存问题,因为有一些沉重的多媒体内容,我不popup任何ViewController ,90%的时间,用户不能回到以前的ViewController ,只是转发到一个新的。 我想要一个替代scheme,每当我跳到一个新的ViewController ,旧的从内存中释放。

如何释放不再使用的UIImage的内存

我正试图将一些较小的图像合并成一个较大的图像。 该应用程序崩溃,因为它的内存不足,但我不知道如何释放内存后,它使用,所以它一直build立直到应用程序崩溃。 addImageToImage和resizeImage例程看起来是导致崩溃,因为我不能释放内存后,不再需要它的内存。 我在这个项目中使用自动引用计数。 我已经尝试将图像设置为零,但这并不能阻止崩溃。 testImages是在一个从主ViewController调用的类中,而addImageToImage和resizeImage在另一个名为ImageUtils的类中。 有人可以看看这个代码,并向我解释如何正确释放这两个例程分配的内存。 由于项目使用ARC并将它们设置为零,所以我无法在图像上调用发布。 + (void)testImages { const int IMAGE_WIDTH = 394; const int IMAGE_HEIGHT = 150; const int PAGE_WIDTH = 1275; const int PAGE_HEIGHT = 1650; const int COLUMN_WIDTH = 30; const int ROW_OFFSET = 75; CGSize imageSize = CGSizeMake(PAGE_WIDTH, PAGE_HEIGHT); UIGraphicsBeginImageContextWithOptions(imageSize, YES, 0); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextFillRect(context, CGRectMake(0, […]

内存泄漏与SubstringWithRange NSString

通过X-Code中的Leaks工具运行我的程序,它指向这个函数是我内存泄漏的主要原因。 + (NSMutableArray *) getColumns:(NSString *) deviceHtml { NSMutableArray *ret = [[[NSMutableArray alloc] init] autorelease]; NSRegularExpression *m = [[NSRegularExpression alloc] initWithPattern:@"<td[\\w\\W\\d\\s</>]*?>[\\w\\W\\d\\s]+?</td>" options:NSRegularExpressionCaseInsensitive error:nil]; NSArray *results = [m matchesInString:deviceHtml options:NSMatchingCompleted range:NSMakeRange(0, [deviceHtml length])]; [m release]; for (NSTextCheckingResult * res in results) { NSString *cleaned = [deviceHtml substringWithRange:[res range]]; int firstClose = [cleaned rangeOfString:@">"].location; int cleanedLength = […]

GoogleToolboxForMac.framework和GoogleOpenSource.framework冲突

我已经在我的应用中使用GoogleOpenSource.framework进行Google+整合。 现在我想添加Firebase Analytics和Google跟踪代码pipe理器。 为了做到这一点,它需要包括GoogleToolboxForMac.framework。 现在我包含GoogleToolboxForMac和GoogleOpenSource框架。 问题是两个框架都有GTMLogger类,所以项目无法编译。 它给 duplicate symbol _OBJC_METACLASS_$_GTMLogAllowedLevelFilter 我尝试从框架中删除GTMLogger类,但不能完成。 我该怎么办才能解决这个问题呢?

内存泄漏 – UIImagePNGRepresentation

我想从UIImagePicker复制到文档目录的图像。 我正在使用@"UIImagePickerControllerOriginalImage"键从UIImagePickerDelegate的字典中获取原始图像。 我正在使用UIImagePNGRepresentation将图像写入文件。 当我添加(重复过程)图像的高分辨率(图像大小约20 MB),我正面临着内存问题。 我分析并使用了Xcode的内存泄漏function,并放大了下面一段代码,这是泄漏的责任。 @autoreleasepool { imagesData = UIImagePNGRepresentation(images); [imagesData writeToFile:name atomically:NO]; imagesData = nil; //[UIImageJPEGRepresentation(images, 1.0) writeToFile:name atomically:YES]; } 我在这里看到了很多关于UIImagePNGRepresentation引起的内存泄漏的问题。 但是我还没有find妥善解决我的问题。 需要帮忙。

与RAII类似的习惯性短寿命本地对象

我遇到了Objective-C的这个片段: NSNumber *theBalance = [[[NSNumberFormatter alloc] init] numberFromString: [textField text]]; 这似乎泄漏NSNumberFormatter 。 在C ++中,我会做两件事情之一: 为NSNumberFormatter使用auto (即堆栈)存储 使用RAII(例如shared_ptr )来pipe理NSNumberFormatter的生命周期 在Objective-C中,这些选项都不可能。 我试图在堆栈上: NSNumberFormatter fmt; 但是这不能编译。 据我所知,Objective-C中没有RAII的直接等价物。 我可能从一个主要的C ++程序员的angular度来看待这个问题,所以: 在一般情况下,在这里处理像NSNumberFormatter这样的对象的生活的正确的,惯用的(现代的)Objective-C方法是什么? 我真的必须自己明确吗? 在具体情况下是否有解决实际问题的更好方法?