草庐IT

automatic-ref-counting

全部标签

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

ios - 保留 NSOperation 的计数行为

将NSOperation插入NSOperationQueue是否会增加NSOperation的保留计数?如果是,它什么时候会减少? 最佳答案 请阅读文档。https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/NSOperationQueue_class/Reference/Reference.html(void)addOperation:(NSOperation*)operationParametersoperationTheoperationo

ios - 管理 CGImageRef 内存的规则?

使用ARC管理CGImageRef内存的规则是什么?也就是说,有人可以帮我找到正确的文档吗?我正在从照片库中获取图像并创建一个UIImage来显示:CGImageRefnewImage=[assetRepfullResolutionImage];...UIImage*cloudImage=[UIImageimageWithCGImage:newImagescale:scaleorientation:orientation];我需要做CGImageRelease(newImage)吗?我收到内存警告,但它似乎不是我尚未释放的对象的逐渐累积,而且我没有看到Instruments有任何泄漏。

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 阻止潜在的内存泄漏

-(NSString*)encodeURL:(NSString*)string{NSString*newString=(__bridgeNSString*)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(__bridgeCFStringRef)string,NULL,CFSTR(":/?#[]@!$&'()*+,;=\"%{}|\\^~`"),CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));if(newString){returnn

ios - 以下 iOS 代码安全吗? (__autoreleasing 语义)

-(NSData*)jsonRepresentation:(NSError**error)error{NSDictionary*dict=[selfgetDictRepresentation];return[NSJSONSerializationdataWithJSONObject:dictoptions:nilerror:error];}//Someotherplace...NSError*__autoreleasingerror=nil;NSData*json=[objjsonRepresentation:&error];自动释放语义是否安全地将错误传送到我的第二个代码块?

ios - 在方法中对变量使用弱限定符

-(void)showWeakValue{NSString*__weakweakString=[[NSStringalloc]initWithFormat:@"FirstName:AA"];NSNumber*__weakweakNum=[[NSNumberalloc]initWithInt:10];NSLog(@"weakString=%@",weakString);NSLog(@"weakNum=%@",weakNum);}输出是weakString=(null)weakNum=10为什么weakNum不为空?因为没有其他对weakNum的强引用,它应该在分配后立即释放。对吧?