Tag: 自动ref counting

在转换项目使用ARC时,“switch case in protected scope”是什么意思?

在转换项目使用ARC时,“switch case in protected scope”是什么意思? 我正在转换项目使用ARC,使用Xcode 4编辑 – >重构 – >转换为Objective-C ARC …我得到的一个错误是“开关大小在保护范围内”一个开关盒。 编辑,这是代码: ERROR在“默认”情况下被标记: – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @""; UITableViewCell *cell ; switch (tableView.tag) { case 1: CellIdentifier = @"CellAuthor"; cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; } cell.textLabel.text […]

为什么苹果推荐使用dispatch_once来实现ARC下的单例模式?

在ARC下的单例共享实例存取器中使用dispatch_once的确切原因是什么? + (MyClass *)sharedInstance { // Static local predicate must be initialized to 0 static MyClass *sharedInstance = nil; static dispatch_once_t onceToken = 0; dispatch_once(&onceToken, ^{ sharedInstance = [[MyClass alloc] init]; // Do any other initialisation stuff here }); return sharedInstance; } 在后台asynchronous实例化单例不是一个坏主意吗? 我的意思是,如果我请求共享实例并立即依赖它,会发生什么情况,但dispatch_once需要等到圣诞节才创build我的对象? 它不立即返回正确的? 至less这似乎是大中央调度的重点。 那他们为什么要这样做?

我可以使用Objective-C块作为属性吗?

是否有可能使用标准属性语法块作为属性? ARC有没有变化?

有了ARC,有什么更好的:alloc或autorelease初始化器?

使用alloc或autorelease初始值设定项会更好(更快更高效)吗? 例如: – (NSString *)hello:(NSString *)name { return [[NSString alloc] initWithFormat:@"Hello, %@", name]; } 要么 – (NSString *)hello:(NSString *)name { return [NSString stringWithFormat:@"Hello, %@", name]; // return [@"Hello, " stringByAppendingString:name]; // even simpler } 我知道在大多数情况下,这里的performance应该不重要。 但是,我仍然喜欢养成更好的方式。 如果他们做同样的事情,那么我更喜欢后面的选项,因为它的types更短,更具可读性。 在Xcode 4.2中,有没有办法看到ARC编译的内容,即retain , release , autorelease等? 这个function在切换到ARC时非常有用。 我知道你不应该考虑这个问题,但是这会帮助我找出这样的问题的答案。

ARC禁止在结构或联合中使用Objective-C对象,尽pipe标记了文件-fno-objc-arc

ARC在结构或联合中禁止Objective-C对象,尽pipe标记文件-fno-objc-arc? 这是为什么? 我有一个假设,如果你标记它-fno-objc-arc你没有这个限制。

在自动引用计数下,为什么不允许保留,释放和释放?

当在Xcode 4.2中使用自动引用计数构build我的应用程序时,尝试使用-retain , -release和-dealloc时,出现如下错误: 自动引用计数禁止“dealloc”的显式消息发送 为什么我看到这个错误? 在自动引用计数下,是否-dealloc , -release ,和-dealloc不再允许?

ARC是否与Core Graphics对象一起工作?

我最近开始使用自动引用计数(ARC)的新项目。 当我分配CALayer的内容时: UIView* view = … UIImage* image = … view.layer.contents = image.CGImage 我有一个错误 ARC不允许将非Objective-C指针types“CGImageRef”隐式转换为“id” 简单地把CGImageRef成id隐藏了这个错误,但是我想知道ARC是否仍然正常工作呢?

ARC真的支持iOS 4吗? iOS 4.2 SDK在链接时缺less与ARC相关的符号

自从ARC第一次宣布这是一个编译时的事情,我已经阅读和听到,将与iOS 4向后兼容。我已经成功地使用Xcode 4.2的自动重构将我的项目重构为AR​​C,并且在针对iOS 5.0 SDK,它工作正常。 但是,如果我尝试编译我的iOS 4.2 SDK,它在链接时失败,缺less以下符号: _objc_retainAutoreleaseReturnValue _objc_autoreleaseReturnValue _objc_storeStrong _objc_retain _objc_release _objc_retainAutoreleasedReturnValue 我检查了,这些符号是在5.0而不是4.2: iPhoneOS5.0.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$ 00005ed0 T _objc_retain 000061d0 T _objc_retain iPhoneOS4.2.sdk/usr/lib $ find . -type f|xargs nm|grep -i _objc_retain$ [… *crickets* …] 这是否意味着苹果撒谎? 我认为,我是困惑,做错了什么,但我无法弄清楚什么。 这是通用汽车发布的Xcode 4.2(Build 4C199)

我应该在接口中声明variables还是在objective-c arc中使用属性?

方法1: @interface MyController : UIViewController { UILabel *myText; } @property (nonatomic, strong) UILabel *myText; 方法2: @interface MyController : UIViewController @property (nonatomic, strong) UILabel *myText; 方法3: @interface MyController : UIViewController { UILabel *myText; } 我读过一些关于这种东西的文章,但是我还没有真正意识到我必须采用哪种方法。 我也发现有人说方法1是一个古老的方式,所以我想知道使用ARC的ios sdk 6的最佳做法。 我知道使用属性声明variables是生成getter和setter的简单方法,有人build议使用它。 但是,我想问一个variables是不是由另一个类调用,是否有必要为variables使用属性? 并将其设置为接口内的私有variables? 还是只有在界面内声明的variables才更好? 我想学习最好的做法,所以请原谅我,如果这是一个愚蠢的问题。 而且,有些开发者用这种方式写@synthesize @synthesize myText=_myText; 但有些写道: @synthesize myText; 我也想知道其中的差别,哪一个更好? 非常感谢你!

NSString到CFStringRef和CFStringRef到ARC中的NSString?

我想了解从ARC中的CFStringRef获取NSString的正确方法? 相反的方向, CFStringRef到ARC的NSString ? 什么是正确的方法来做到这一点,而不造成内存泄漏?