草庐IT

fno-objc-arc

全部标签

ios - 如何正确实现 ARC 兼容和 `alloc init` 安全单例类?

这个问题在这里已经有了答案:HowdoIimplementanObjective-CsingletonthatiscompatiblewithARC?(10个答案)关闭9年前。我看到了线程安全的版本+(MyClass*)singleton{staticdispatch_once_tpred;staticMyClass*shared=nil;dispatch_once(&pred,^{shared=[[MyClassalloc]init];});returnshared;}但是如果有人只是调用[MyClassalloc]init]会发生什么?如何让它返回与+(MyClass*)singl

ios - ARC __block 和 __weak

假设我正在尝试从一个block中访问self:[someObjectsuccessBlock:^(NSArray*result){[selfsomeSuccessMethod];}failure:^(NSString*errorMessage,intstatus){[selfsomeFailureMethod];}];我知道这会创建一个保留周期,并且someObject和self永远不会被取消分配。令我困惑的是使用/不使用__block关键字时实际发生的情况。我可以通过对self进行__weak引用来修复保留周期:__weakMyClass*me=self;[someObjectsuc

objective-c - 使用 ARC、lifetime qualifier assign 和 unsafe_unretained

我对这两个限定词有点困惑...使用ARC而不是使用weak(即如果我需要支持iOS4)我可以使用unsafe_unretained失去自动零功能......最终结果似乎类似于赋值。我可以将unsafe_unretained与assign交换吗?这些限定符是一回事吗?有关此论点的Apple文档的任何链接都将非常有趣...我只能找到几行here 最佳答案 Clang的technicalspecificationofARC详细介绍了限定符的工作原理。但是,回答你的问题:assign和__unsafe_unretained不是一回事。ass

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 - 错误 "_OBJC_CLASS_$_AppDelegate",引用自 :"and error: linker command failed with exit code 1 (use -v to see invocation)"

我是开发新手,我遇到了这个错误,如果我的AppDelegate文件中缺少某些内容,我不会介意,所以我会向您展示这些文件。h文件#import@interfaceAppDelegate:UIResponder@property(strong,nonatomic)UIWindow*window;@endm文件#import"AppDelegate.h"问题是我想我从tem文件中删除了一些东西,但我不记得它是什么这里是完整的错误信息:架构x86_64的undefinedsymbol:“_OBJC_CLASS_$_AppDelegate”,引用自:main.o中的objc-class-refl

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的所有其他对象都释放了它,那么当我尝试访问它时它是否会为空? 最佳答案 根据其他人的反馈,一些观察结果到此为止

iphone - 我应该在所有 iOS 项目的其他链接器标志中包含 "-ObjC and -all_load"吗?

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whatdoesthe-all_loadlinkerflagdo?我看到大多数静态库都要求你这样做,所以我将它们添加到我的所有项目中,添加它似乎没有副作用?