jjzjj

ios - 使用自定义 getter 和 setter 将消息发送到带有 ARC 的已释放实例

我正在尝试为我的自定义对象HFObject实现自定义getter和setter,尽管使用了ARC,但我的应用程序因Messagesenttodeallocatedinstance错误而崩溃。我已经阅读了每一篇相关的文章,那些在ARC之前写的不适用,其他的都没有帮助。我打开了僵尸对象调试器选项。设置自定义HObject在HObject.h中我声明了这四个属性:@property(retain)NSString*email;//Willusecustomgetter/setter@property(retain)NSString*firstName;//Willusecustomgette

ios - @try-@finally 用于保证在处理 ARC 未跟踪的对象时消除内存泄漏

假设我们使用malloc()/calloc()手动分配内存或分配一些ARC未跟踪的对象(如CGContextRef)。然后,我们正在做一些事情。最终,我们需要释放该内存。例子:void*buf=NULL;//malloc()allocatedobjectexampleCGContextRefcontext;//Non-manageablebyARCobjectexample@try{buf=malloc(bufSize);context=CGBitmapContextCreate(buf,width,height,bitsPerComponent,bytesPerRow,colorSp

objective-c - 如果我打开了 ARC,是否需要释放 SystemSoundID?

问题在标题中:“如果我打开了ARC,是否需要释放SystemSoundID?”这是我的代码:NSURL*pathURL=[NSURLfileURLWithPath:path];SystemSoundIDsoundid;AudioServicesCreateSystemSoundID((__bridge_retainedCFURLRef)pathURL,&soundid);AudioServicesPlaySystemSound(soundid);如果是这样,我什么时候发布它?(我没有dealloc方法,因为我使用的是静态方法并且无法更改)此外,这是目前播放音效的最佳方式吗?我听说这个框

ios - ARC 转换失败 : -ccc-arcmt-check argument "unused"

我正在尝试将我的iOS项目升级为使用ARC。当通过Edit->Refactor->ConverttoObjective-CARC开始转换时,我选择我的目标,取消选择链接库并按下检查。接下来我收到以下错误:clang:error:argumentunusedduringcompilation:'-ccc-arcmt-check'Command/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clangfailedwithexitcode1一些想法如何解决这个问题?X

ios - 使用 ARC 和 block 时保留循环

根据我的理解,当一个对象方法接收到一个block作为完成参数时,我可以在block中发送“self”:[objectdoMethodWithCompletion:^{[selfdoSomethingWhenThisMethodCompletes]}];但是如果这个对象“保留”了block(保存它以备将来使用)我应该发送一个我自己的“弱”副本:__weak__typeof__(self)weakSelf=self;object.savedBlock=^{[weakSelfdoSomethingWhenThisBlockIsCalledFromWithinObject];};但我也看到了变

ios - 在 ARC 中释放强引用

我的项目启用了ARC。我有一个类是NSObject的直接子类,我的类有一个NSArray(强引用)。我怎样才能释放我的阵列?我的理解InARCnoneedofreleasingobjectssetniltomyNSArray(Strongreference)indeallocmethodsetniltomyNSArray(Strongreference)inviewDidUnloadincaseofviewcontroller这是释放我的NSArray的正确方式吗?如果不是,那么正确的方法是什么? 最佳答案 所以首先,viewDid

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环境自动创建什么样