草庐IT

autorelease

全部标签

iphone - 圆弧 "It is not safe to remove an unused autorelease message"

当转换到ARC时,我收到以下编译器错误:“删除未使用的自动释放消息是不安全的”。如果我简单地删除自动释放消息,obj将在getAutoreleasedObj结束时立即被释放,这将导致printObj崩溃。那么如何处理自动释放的对象,并将以下代码转换为ARC?-(MyClass*)getAutoreleasedObj{MyClass*obj=[[MyClassalloc]init];[objautorelease];returnobj;}-(void)printObj{NSLog(@"%@",[selfgetAutoreleasedObj];} 最佳答案

objective-c - autorelease 不允许编译代码

我正在尝试将旧代码转换为ARC代码。但是,我在以下行收到构建错误[[tokenretain]autorelease];我按以下顺序收到3个错误:-'autorelease'不可用:在自动引用计数模式下不可用-[rewriter]删除未使用的“autorelease”消息是不安全的;它的接收器可能会立即被销毁-ARC禁止'自动释放'的显式消息发送如果我删除这一行,代码就能正确编译 最佳答案 如果仅此而已,您可能只需将其删除即可。该代码声明对该对象的引用,但也表示您不想担心稍后释放,但使用ARC您不必担心它。我猜Xcode没有自动删除它

ios - Objective-C - 弱对象自动注册到 autoreleasepool 中?

我正在阅读KazukiSakamoto编写的ProMultithreadingandMemoryManagementforiOSandOSXwithARC、GrandCentralDispatch和Blocks。书中写道:Whenavariablewitha__weakqualifierisused,theobjectisalwaysregisteredinautoreleasepool.id__weakobj1=obj0;NSLog(@"class=%@",[obj1class]);Theabovesourcecodeisequivalentto:id__weakobj1=obj0;

iphone - 如何使用 ARC 处理 iOS 中的自动释放对象

我正在创建一个启用了ARC的iPhone应用程序,我遇到了这种情况。在应用程序的每个页面中,都会发生一个Web服务调用。在这种方法中,我在从服务器添加新值之前从数组中删除所有对象。一切正常,但有时应用程序在[self.myArrayremoveAllObjects]处崩溃。我已经为myArray@property(strong,nonatomic)NSMutableArraymyArray;设置了@property;我的想法是,当我使用ARC时,对象myArray在某个时候被释放,我尝试从同一个数组中删除所有对象。这导致了崩溃,我不确定,但我没有看到任何其他原因。所以,我想在删除其中的

ios - 如何在没有内存泄漏的情况下返回 CFDataRef?[ios]

当我通过返回一个CFDataRef时(CFDataRef)MyFunction{.....CFDataRefdata=CFDataCreate(NULL,buf,bufLen);free(buf);returndata;}存在内存泄漏,如何让CFDataRef自动释放?方法[dataautorelease]不会退出。 最佳答案 您不能自动释放CoreFoundation对象。(但是,您可以自动释放支持免费桥接的CoreFoundation对象,例如CFDataRef;请参阅下面的@newacct的回答。)Objective-C的约定

objective-c - 未分配对象指针被释放的 iOS Objective-C 错误

我在xcode中遇到以下错误。对象0x4e18d00错误:未分配正在释放的指针**在malloc_error_break中设置断点进行调试我已经在目标中设置了NSZombieEnabled,所以我可以查看调用。这是-[___NSArrayI释放]看起来我已经在我的代码中的其他地方释放了一些数组,然后当它已经被释放时自动释放池也试图释放它。我怎样才能知道在哪里?有什么想法吗?仅供引用,我正在使用arrayWithCapacity方法或类似方法创建我的所有数组,从不使用alloc或init方法。我没有看到,在我发布这些相同阵列的任何地方。(也许我瞎了!!)此外,控制流程如下:我单击一个UI

objective-c - 属性赋值后自动释放

我一直在考虑如何减少我的代码错误。在清理其他程序员的代码时,我已经多次看到这种情况,并且想知道我的多线程环境中的调用不安全的假设是否正确:self.prop1=[[[SomeClassalloc]init]autorelease];我的想法是,如果在应用程序完成函数之前,另一个线程介入并释放prop1,那么在下一个runLoop中,如果prop1未被另一个线程设置为nil,则初始化的指针可能会再次释放线程。Timeline:*-----------------**-----------*|||||Thread1autoreleasesprop1whendonewithfunction|

ios - 为什么在没有 @autoreleasepool 的 for 循环的每个循环中 NSString autorelease

这是我的测试代码:for(inti=0;i在ARC环境中,循环不会使内存爆炸。在我的例子中,运行这个循环只需要1.2MBRAM。但是在MRC中,除非使用@autoreleasepool代码块,否则循环会使内存爆炸。令我困惑的是有很多文章说当代码在for中时需要将代码放在@autoreleasepool中环形。但在这种情况下,没有@autoreleasepool也没关系。请帮我解决这个问题。谢谢。更新:如果我这样写代码:for(inti=0;i这段代码会导致ARC和MRC中的内存爆炸。为什么?stringWithFormat:还返回一个自动释放对象。我对此感到困惑...

ios - 设置一个 plist 来存储 iPhone 游戏的应用程序数据(不是设置)

我正在编写一款iPhone游戏,它与我的硬编码关卡数据配合良好,但我想将关卡数据存储在plist中,并在启动时加载它。我从未使用过plist,并且无法理解如何根据我的数据模型设置plist。这是我现在硬编码的方式:(在我的appDelegate中)-(void)loadLevels{//setupNSNumberobjectstoloadintosequencesNSNumber*rID=[[[NSNumberalloc]initWithInt:0]autorelease];NSNumber*bID=[[[NSNumberalloc]initWithInt:1]autorelease]

ios - 在 iPad 上显示大型 PDF 时 UIWebView 泄漏

这里有一些奇怪的行为,我希望有人可以确认这是一个已知的错误,或者建议一个解决方法。我的iPad应用程序需要显示一些大的PDF(~7mb和大量图形。)阻力最小的路径当然是UIWebView,但我的应用程序在显示一些后崩溃。我将行为隔离在一个新项目中,并在其上运行Instruments。这是结果。它们似乎表明UIWebView中发生了严重的泄漏。最小ViewController中的基本代码:-(IBAction)doPresent:(UIView*)sender{NSURL*url=[[NSBundlemainBundle]URLForResource:[NSStringstringWit