草庐IT

ARC下AutoReleasePool的误区

全部标签

ios - @synthesize of 'weak' 属性只允许在 ARC 或 GC 模式下第一次编译 urbanship

基本上,我有一个运行正常的IOS应用程序。同时按照http://docs.urbanairship.com/build/ios.html#ios-push-getting-started中的说明进行操作,我到达了“RegisterYourDevice”部分,要求我进行编译。尝试在xCode5中构建代码后,我收到以下错误“@implementationUAPushSettingsAddTagViewController@synthesizeof'weak'propertyisonlyallowedinARCorGCmode”。注意:ARC模式未使用。 最佳答案

ios - Objective-c:为什么 Core Foundation 变量需要在 ARC 中显式释放?

当我想到ARC时,没有发布的开销。但是一旦遇到CoreFoundation变量,它们也需要在ARC中发布。尽管NS..和CF..的ARC规则不同,但是否有任何不支持CF..的特定原因>在ARC中? 最佳答案 WhenIthinkaboutARCthereisnooverheadofrelease.我假设您的意思是“我不必担心发布”。通常会有一些性能开销,尽管编译器有时可以优化它。ThoughtheARCrulesaredifferentforbothNS..andCF..,isthereanythingspecificreasonf

ios - Xcode Convert to ARC, Create universal binary fails with error of "can' t 找出架构类型”

我正在尝试将iOS(纯Objective-C)项目转换为ARC。转换在octestObjective-CreateUniversalBinary阶段失败并出现以下错误。项目和目标架构build设置在我看来是正确的,所以我很难理解为什么会失败:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/lipo:can'tfigureoutthearchitecturetypeof:/Users/andybowskill/Library/Developer/Xcode/D

iOS:ARC 不允许使用 CFTypeRef

我想从我的钥匙串(keychain)中获取用户名/密码。为此,我遵循了本指南:SimpleiPhoneKeychainAccess但是这部分在ARC中是不允许的:NSData*result=nil;OSStatusstatus=SecItemCopyMatching((CFDictionaryRef)searchDictionary,(CFTypeRef*)&result);我能做什么? 最佳答案 ARC只管理Objective-C类型。如果转换为CoreFoundation类型,则必须使用__bridge、__bridge_ret

objective-c - 在 arc 中,当你不合成时会发生什么

在启用iOSARC的项目中,如果我不合成属性会发生什么情况,因为保留/释放是不允许的?@interfaceSomeClass:NSObject{NSMutableArray*_pieces;}@end在这种情况下,iVar_pieces的内存语义是什么?假设我使用_pieces=whatever设置它。当我的SomeClass实例被释放时,_pieces是否设置为nil?_pieces是否存储为弱引用?如果保留_pieces的所有其他对象都释放了它,那么当我尝试访问它时它是否会为空? 最佳答案 根据其他人的反馈,一些观察结果到此为止

ios - 在 ARC 应用程序中包含非 ARC 库?

那么,这可能吗?我多次收到此错误:ARCforbidsObjective-Cobjectsinstructsorunions例如这里:typedefstruct{BOOL_field1;union{struct{id_field1;id_field2;}_field1;GSEventRef_field2;}_field2;}XXStruct_CKAdxD; 最佳答案 您需要将-fno-objc-arc添加到每个不/不能使用ARC的文件的编译器选项中。在Xcode中,您可以从目标的“编译源代码”构建阶段执行此操作。双击文件,在弹出的框

ios - Arc4随机 float ?

这样做:floatx=arc4random()%100;返回一个0到100之间的数字的体面结果。但是这样做:floatx=(arc4random()%100)/100;返回0。如何让它返回一个浮点值? 最佳答案 简单地说,您进行的是整数除法,而不是float除法,因此您得到的只是截断的结果(例如,.123被截断为0)。尝试floatx=(arc4random()%100)/100.0f; 关于ios-Arc4随机float?,我们在StackOverflow上找到一个类似的问题:

objective-c - 使用 ARC 返回自动释放的 CFTypeRef

我是LLVM和Objective-C自动引用计数的新手,对从我的Objective-C函数返回CGImageRefs有疑问。在手动引用计数的时代,可以简单地将CGImageRef转换为id,自动释放它,然后返回原始CGImageRef。使用ARC,我知道您可以指示ARC系统自动释放并返回您的可保留对象,但我没有看到为CFTypeRefs执行此操作的方法。这是我在禁用ARC的情况下可以做的事情:-(CGImageRef)image{CGImageRefmyImage;idmyImageID=(id)myImage;[myImageIDautorelease];returnmyImage;

iOS 编程 : Making an arc4_random not repeat itself using a do while loop

这个问题在这里已经有了答案:What'stheBestWaytoShuffleanNSMutableArray?(12个答案)关闭8年前。在此代码中,第二行遍历数组并输出它接收到的内容及其随机数。但有时我会说同样的话两次,就像它会说“Straub”,然后是“Straub”,然后是“Rusher”之类的东西。我试过做一个“dowhileloop”,但我不知道如何在它不重复的地方设置它。顺便说一句,这是一种快速的编程语言。lettypes=["Alex","Straub","Rusher","Graser"]lettype=types[Int(arc4random_uniform(UInt

ios - 你能使用 Swift ARC 快速释放稀缺资源(文件描述符、网络套接字)吗?

假设您正在编写一个接收大量套接字连接的服务器,并且您希望确保在不再需要套接字或出现异常时立即关闭套接字。能否借助Swift的ARC将资源包装在一个对象中,并在deinitialize()方法中释放它,从而有效地实现快速稀缺资源释放?是否可以将“defer”关键字用于相同的目的,一种方法优于另一种方法吗? 最佳答案 回答我自己的问题:知道Swift使用与Objective-C相同的ARC实现,答案是不建议依赖ARC来释放稀缺资源。Apple建议不要在此处以这种方式使用ARC:https://developer.apple.com/li