草庐IT

Arc4random

全部标签

iphone - ARC 下紧密循环中 UIKit 的内存管理

我有兴趣详细了解如何使用ARC在紧密循环下最好地处理内存管理。特别是,我有一个我正在编写的应用程序,它有一个while循环,它运行了很长时间,而且我注意到尽管已经实现了(我认为是)ARC中的最佳实践,堆会无限增长。为了说明我遇到的问题,我首先将以下测试设置为故意失败:while(true){NSMutableArray*array=[NSMutableArrayarrayWithObject:@"Foo"];[arrayaddObject:@"bar"];//dosomethingwithittopreventcompileroptimisationsfromskippingoveri

ios - 为什么使用 ARC 将其标记为潜在泄漏?

我仍然对ARC、桥接和某些非免费桥接CF对象感到困惑。我目前的困惑是围绕CFSocket。我很确定我正在正确清理,但分析工具却告诉我并非如此。也许我的不和谐让我看不到泄漏,或者工具是错误的。我还没准备好责备这个工具,所以我正在寻找其他人来指出这个问题。例如,我是否缺少将所有权转让给我的__bridge形式?在我的项目中,使用ARC,我有一个基于TCP的服务器。让我们称这个类为“MyServer”。在MyServer中,我有一个内部属性socket,定义如下:@property(assign)CFSocketRefsocket;此属性保存服务器运行时的套接字引用。停止服务器将释放引用,删

ios - 使用 ARC 时释放 NSMutableArray

我正在使用最新的SDK和ARC开发iOS应用程序。我有这个变量:NSMutableArray*_previewImageBuffer;这个方法:-(void)shutdown{[selfstop];_previewImageBuffer=nil;}_previewImageBuffer=nil;是否正确?如果我这样做,_previewImageBuffer`中分配的内存会怎样?这是内存泄漏吗?我想释放这个对象,因为我需要释放它使用的内存。 最佳答案 你所做的是完全正确的。在ARC下取消对象实例变量会释放该对象。释放一个NSArray

iphone - ARC 环境中的 Setter 和 Getter

我仍在学习CocoaTouch的一些细微差别。在ARC环境中,内部会为float、int等类型生成什么样的getter/setter?我知道如果属性是非ARC上的对象,我可能会有这样的东西:-(NSURL*)url{if(_url==nil)_url=[[MyURLalloc]initWithURL:url];return_url}-(void)setUrl:(NSURL*)theUrl{if(theUrl!=_url){[_urlrelease];_url=[theUrlretain];}}但在ARC环境中不能使用release和retain。在这种情况下,为ARC环境自动创建什么样

ios - UIDatePicker 内存泄漏与 ARC

我正在制作一个应用程序,其中包含一些带有UIDatePicker控件的ViewController。在收到大量内存警告后,我对原因进行了大量调试。使用仪器,我能够看到每当出现包含UIDatePicker的ViewController时,内存使用量就会增加2-3mb。最终,这会导致内存警告。虽然我可以在这里做很多事情,并且自从重写这些函数后崩溃率急剧下降,但我仍然对这种行为感到不满意并希望修复它。UIDatePicker是XIB文件的一部分。我试过将它们从XIB中取出并以编程方式添加它们。这不能解决问题。我也尝试过使用(线程安全的)单例。这将内存使用限制为只有一个实例(因此内存使用不会增

ios - 消息发送到解除分配的实例 ARC

我正在做一个从服务器下载图像并将其显示在View上的应用程序。我正在为此使用委托(delegate)。图像加载完成后,代理会向View发送消息以显示图像。上述场景运行良好。但是,如果我从该特定View移出到任何其他View,则当图像加载完成时,委托(delegate)会尝试发送消息并导致错误。我试过设置imageFetcher.delegate=nil;在查看didUnload。同样在调用下载类中的委托(delegate)方法之前,我检查委托(delegate)是否为零。但我可以看到委托(delegate)对象不是nil。if(delegate!=nil){[delegateimage

ios - 使用 arc 使 NSTimer 无效时遇到问题 - IOS

这个问题已经被问到死于堆栈溢出,我已经看到了过多的答案,但不知何故我仍然遇到了麻烦。无论如何,我分配了一个NSTimer,因为在我看来确实加载了:NSTimer*oneSecondTicker=[[NSTimeralloc]init];oneSecondTicker=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(updateLabelsWithOneSecondTicker)userInfo:nilrepeats:YES];self.dateForTimeLabel=[NSDatedate

ios - Objective-C : Infinite getter method loop after converting to ARC

我有以下方法:-(NSMutableArray*)someArray{//line1if(self.someArray==nil){//line2self.someArray=[[NSMutableArrayalloc]init];}returnself.someArray;}我在非ARC中有这个,它工作正常:如果第2行中的self.someArray是nil,那么继续实例化它。但是,我切换到ARC之后,到了第2行,又回到第1行,继续循环。任何帮助将不胜感激。谢谢。 最佳答案 正确的形式是@synthesizesomeArray=_

ios - Arc4random 错误 : "Invalid operands to binary expression (' float' and 'float' )"

我想在特定View中的随机位置创建一个按钮。我搜索并阅读了一些SO主题,但是找不到解决问题的方法。这是我的代码:UIButton*button1=[UIButtonbuttonWithType:UIButtonTypeCustom];CGRectbuttonRect=button1.frame;buttonRect.size=CGSizeMake(100,100);button1.frame=buttonRect;[self.arraddObject:button1];intr=([button1frame].size.width)/2;intx=r+(arc4random()%(se

ios - ARC 并释放在方法中创建的对象

我偶然发现了一个我在其他地方找不到答案的问题。当我调用一个返回指向一个对象的指针的方法时,该对象稍后被使用并在最后设置为nil,它仍然分配在内存中(根据Instruments)。我正在使用XCode4.6.3和iOS6.1。ARC已打开。示例代码如下:A类.h@interfaceClassA:NSObject-(void)runSomething;@endA类.m#import"ClassA.h"#import"ClassB.h"@implementationClassA-(void)runSomething{intcounter=0;while(true){ClassB*instan