草庐IT

Arc4random

全部标签

objective-c - 内存警告和崩溃 (ARC) - 如何确定它发生的原因?

我最近开始使用ARC,从那时起我就把每一个内存问题都归咎于它。:)也许,您可以帮助我更好地理解我做错了什么。我当前的项目很多都是关于CoreGraphics的——绘制图表、填充缩略图的View等等。我相信使用手动内存管理不会有任何问题,除了可能会出现一些僵尸......但截至目前,每次我尝试创建大量缩略图或重绘更复杂的图表时,应用程序都会崩溃。在使用Instruments进行分析时,我可以看到常驻内存和脏内存中的值非常高。堆分析显示相当惊人的不规则增长......当只绘制几个缩略图时,驻留内存会增长大约200MB。绘制完所有内容后,内存会回落到与绘制前几乎相同的值。但是,对于很多缩略图

ios - Apple 在 ARC 文档警告中针对通过引用传递的警告是什么?

在Apple关于ARC的文档中,他们特别指出了一个有问题的场景,在该场景中,ARC将在幕后生成样板临时变量。搜索“编译器因此重写”:https://developer.apple.com/library/mac/releasenotes/ObjectiveC/RN-TransitioningToARC/Introduction/Introduction.html警告的要点似乎是因为基于堆栈的变量是“strong”并且被调用方法(performOperationWithError:)的引用参数是自动释放的,ARC将生成一个临时局部变量来为内存服务自动释放变量的管理需求。但是因为在样板示例

objective-c - ARC 中的假 va_list

我需要在iOS应用程序中创建一个伪造的va_list以传递给NSStringinitWithFormat:arguments:函数,这是我的代码:NSArray*fixedArguments=[[NSArrayalloc]initWithArray:arguments];NSRangerange=NSMakeRange(0,[fixedArgumentscount]);va_listfakeArgList=(va_list)malloc(sizeof(NSString*)*[fixedArgumentscount]);__unsafe_unretainedid*ptr=(__unsaf

objective-c - iOS 和 ARC : How to retain self during asynchronous operations?

这是我第一次摆弄iOS5和ARC。到目前为止,一切顺利,但我遇到了一些问题。我有一个自定义的UIStoryboardSegue,我在其中使用FacebookConnect(或其他服务)将用户登录到我的应用程序。简而言之,它应该执行以下操作:用户点击按钮按钮触发Seguesegue启动异步登录但不会立即推送ViewController当且仅当登录成功时,segue推送ViewController相反,登录开始了,但是在它有任何机会完成之前,ARC立即释放了segue。我想到了一个快速的'n'dirtyhack来防止这种情况:@interfaceBSLoginSegue(){__stron

iphone - 在 arc 下使用 objc_getClassList

有没有人设法在arc下使用objc_getClassList,而不是为有问题的文件关闭arc?根本问题是其中一个参数是类指针的C数组。 最佳答案 此代码应在ARC下工作:intnumClasses;Class*classes=NULL;classes=NULL;numClasses=objc_getClassList(NULL,0);NSLog(@"Numberofclasses:%d",numClasses);if(numClasses>0){classes=(__unsafe_unretainedClass*)malloc(si

objective-c - ARC 引入了哪些新的类型限定符?

自动引用计数(ARC)引入了一些新的类型限定符。我见过__strong和__weak,但它们的作用是什么? 最佳答案 __strong表示在赋值时,表达式的右值将被保留并使用原始语义存储到左值中。(要释放这样一个对象,你所要做的就是分配它nil,之前引用的对象将被释放,nil将被保留,这实际上什么都不做,它是桃子和奶油。)__unsafe_unretained和__weak在右值的地址将被分配给左值的意义上是相似的,但是如果你使用__weak限定符,此操作保证是原子的,并受制于一些不同的语义。其中之一是,如果正在分配的对象当前正在进

ios - 将非 ARC 项目转换为 ARC 项目而不重新创建它?

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我只是想知道是否可以将非ARC项目转换为ARC而无需重新创建它?谢谢

ios - SudzC ARC 版本 - objc_msgSend 调用导致 EXC_BAD_ACCESS 使用 64 位架构

编辑-我已将以下问题追踪到64位与32位架构问题...请参阅我发布的答案以了解我是如何解决的我使用SudzC为Web服务生成SOAP代码。他们为您提供了一个示例应用程序,我能够在设备和模拟器上成功使用它。然后我开始构建我的应用程序。我使用空白应用程序模板(启用了CoreData和ARC)将SudzC生成的文件导入到一个新的XCode项目中。我启动并运行了第一个SOAP请求——模拟器中一切正常——然后我开始在设备(运行iOS7.02的iPhone5S)上进行第一次测试。每次运行SOAP请求时,设备都会抛出EXC_BAD_ACCESS错误。我已经追踪到SoapRequest.m文件,特别是

ios - UIPopoverController dealloc 被调用—ARC 环境

第二次显示弹出Controller时(关闭它然后重新显示),出现以下错误:由于未捕获的异常“NSGenericException”而终止应用程序,原因:“-[UIPopoverControllerdealloc]在弹出窗口仍然可见时达到。”堆栈跟踪只是一堆十六进制,SIGABRT每次都在UIApplicationMain发生。这是按钮触发的代码:-(IBAction)createNewScore:(id)sender{if(self.pc)if(self.pc.popoverVisible)return;else//Breakpointishithere—crashesafterthi

ios - 为什么 ARC 提示 iOS 6 中的 dispatch_queue_create 和 dispatch_release?

我声明了一个引用GCD队列的属性:@property(assign)dispatch_queue_tbackgroundQueue;在类的init方法中我创建了一个串行队列:backgroundQueue=dispatch_queue_create("com.company.app",DISPATCH_QUEUE_SERIAL);ARC提示:“将保留的对象分配给unsafe_unretained变量;对象将在分配后释放”我必须使用__bridge_transfer吗?在-dealloc中我正在释放队列:dispatch_release(backgroundQueue);再次,ARC提示