标签: automatic-ref-counting

如何启用/禁用"自动引用计数"?

使用Xcode 4.2,如何启用/禁用"自动引用计数"?

解答在构建设置下,根据您是否要启用ARC,将"是"和"否"翻转.

在此输入图像描述

xcode4.2 automatic-ref-counting

33
推荐指数
2
解决办法
3万
查看次数

自定义Getter和Setter iOS 5

我想使用ARC覆盖我的ObjC类中的getter和setter.

.h文件

@property (retain, nonatomic) Season *season;
Run Code Online (Sandbox Code Playgroud)

.m文件

@synthesize season;


- (void)setSeason:(Season *)s {
    self.season = s; 

    // do some more stuff
}

- (Season *)season {
    return self.season;
}
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?

objective-c getter-setter ios automatic-ref-counting

33
推荐指数
3
解决办法
5万
查看次数

iOS bridge vs bridge_transfer

我很困惑与bridgebridge_transfer,这是正确的?

-(void)getData{
    ABAddressBookRef addressBook = ABAddressBookCreate();
    NSArray *allPeople = (__bridge_transfer NSArray*)ABAddressBookCopyArrayOfAllPeople(addressBook);

    NSString *name;
    for ( int i = 0; i < [allPeople count]; i++ )
    {
        name = (__bridge_transfer NSString *) ABRecordCopyValue((__bridge ABRecordRef)[allPeople objectAtIndex:i], kABPersonFirstNameProperty);
    }
    CFRelease(addressBook);
    allPeople = nil;
}
Run Code Online (Sandbox Code Playgroud)

有没有人可以解释我如何使用它们?

objective-c ios automatic-ref-counting

33
推荐指数
2
解决办法
2万
查看次数

如何知道我的Xcode iPhone项目是否使用ARC?

我想知道我的Xcode iPhone项目是否正在使用ARC,我不记得在创建项目时是否勾选了该框.

我怎样才能获得这些信息?

iphone xcode automatic-ref-counting

33
推荐指数
2
解决办法
9560
查看次数

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

方法1:

@interface MyController : UIViewController {
    UILabel *myText;
}

@property (nonatomic, strong) UILabel *myText;
Run Code Online (Sandbox Code Playgroud)

方法2:

@interface MyController : UIViewController
@property (nonatomic, strong) UILabel *myText;
Run Code Online (Sandbox Code Playgroud)

方法3:

@interface MyController : UIViewController {
    UILabel *myText;
}
Run Code Online (Sandbox Code Playgroud)

我读过一些关于这种东西的文章,但我还没有真正意识到我必须采用哪种方法.

我还发现有人说方法1是一种陈旧的方式所以我想知道使用ARC的ios sdk 6的最佳实践.

我知道使用属性声明变量是生成getter和setter的简单方法,有人建议使用它.但是,我想问一个变量不是为了另一个类调用,是否有必要使用属性变量?并在界面内将其设置为私有变量?或者只更改一个仅在界面内声明的变量?我想学习最佳实践,如果这是一个愚蠢的问题,请原谅我.

而且,一些开发人员以这种方式编写@synthesize

@synthesize myText=_myText;
Run Code Online (Sandbox Code Playgroud)

但有些人写道:

@synthesize myText;
Run Code Online (Sandbox Code Playgroud)

我也想知道差异哪一个更好?

非常感谢你!

objective-c instance-variables ios automatic-ref-counting

33
推荐指数
1
解决办法
1万
查看次数

使用ARC不允许将Objective-C指针隐式转换为'void*'

这意味着什么,我有什么选择?

implicit conversion of an Objective-C pointer to 'void *' is disallowed with ARC
Run Code Online (Sandbox Code Playgroud)

我正在将一个Xcode3项目移植到iOS5,它使用AudioSessionInitialize

AudioSessionInitialize(NULL, NULL, NULL, self);
Run Code Online (Sandbox Code Playgroud)

其中,self这里是一个视图控制器.

objective-c core-audio automatic-ref-counting

32
推荐指数
2
解决办法
2万
查看次数

在iOS 4中是否真的支持ARC?iOS 4.2 SDK在链接时缺少与ARC相关的符号

自从ARC首次宣布它是一个编译时的东西并且将向后兼容iOS 4以来,我已经阅读和听过.我已经使用Xcode 4.2的自动重构成功地将我的项目重构为AR​​C,并且在编译时iOS 5.0 SDK,它运行正常.但是,如果我尝试针对我的iOS 4.2 SDK进行编译,则会在链接时失败,缺少以下符号:

  • _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* ...]
Run Code Online (Sandbox Code Playgroud)

这是否意味着苹果撒谎?相反,我认为我很困惑,做错了什么,但我无法弄清楚是什么.

这是Xcode 4.2(Build 4C199)的GM版本

iphone ios4 ios xcode4.2 automatic-ref-counting

32
推荐指数
2
解决办法
2万
查看次数

在iOS5中需要ARC的可达性版本

在iOS5中使用Apple的Reachability代码,我得到了一堆编译错误,如下所示.关于这里发生了什么的任何想法?我正在使用ARC,所以我稍微编辑了标准代码以删除autorelease/retainNSAutoReleasePool.

架构armv7的未定义符号:

"_SCNetworkReachabilityCreateWithAddress",引自:Reachability.o中的:+ [Reachability reachabilityWithAddress:]

"_SCNetworkReachabilityCreateWithName",引自:Reachability.o中的+ [Reachability reachabilityWithHostName:]

"_SCNetworkReachabilityUnscheduleFromRunLoop",引自: - Reachability.o中的[Reachability stopNotifier]

"_SCNetworkReachabilityScheduleWithRunLoop",引自: - Reachability.o中的[Reachability startNotifier]

"_SCNetworkReachabilitySetCallback",引自: - Reachability.o中的[Reachability startNotifier]

"_SCNetworkReachabilityGetFlags",引自: - Reachability.o中的[ - Reachability connectionRequired] - Reachability.o中的[Reachability currentReachabilityStatus]

ld:找不到架构armv7 clang的符号:错误:链接器命令失败,退出代码为1(使用-v查看调用)

有没有人在iOS5下为ARC提供可行的可达性代码?

wifi reachability ios5 automatic-ref-counting

32
推荐指数
5
解决办法
2万
查看次数

IBOutlet和其他弱者或弱者

我已将项目切换到ARC,我不明白是否必须使用strongweak用于IBOutlets.Xcode执行此操作:在界面构建器中,如果创建一个UILabel例如我将它与助理编辑器连接到我的ViewController,它创建:

@property (nonatomic, strong) UILabel *aLabel;
Run Code Online (Sandbox Code Playgroud)

它使用了strong,而不是我在RayWenderlich网站上阅读的教程说:

但对于这两个特殊属性我还有其他计划.而不是 strong,我们将其声明为weak.

@property (nonatomic, weak) IBOutlet UITableView *tableView;
@property (nonatomic, weak) IBOutlet UISearchBar *searchBar;
Run Code Online (Sandbox Code Playgroud)

Weak是所有插座属性的推荐关系.这些视图对象已经是视图控制器视图层次结构的一部分,不需要在其他地方保留.声明出口的最大好处weak是可以节省编写viewDidUnload方法的时间.

目前我们viewDidUnload看起来像这样:

- (void)viewDidUnload
{
    [super viewDidUnload];
    self.tableView = nil;
    self.searchBar = nil;
    soundEffect = nil;
}
Run Code Online (Sandbox Code Playgroud)

您现在可以将其简化为以下内容:

- (void)viewDidUnload
{
    [super viewDidUnload];
    soundEffect = nil;
}
Run Code Online (Sandbox Code Playgroud)

所以使用weak,而不是strong,并删除设置为nil videDidUnload,而不是Xcode使用strong,并使用self... = nil …

weak-references ios ios5 automatic-ref-counting strong-references

32
推荐指数
2
解决办法
2万
查看次数

ARC __bridge修饰符揭秘

我的一位朋友最近问我关于在ARC下变得活跃的新桥修改器.他问我是否知道在特定时间使用哪些,以及不同的__bridge修饰符之间的区别是什么.他告诉我,"那么它们是如何工作的,我什么时候使用它们,我如何使用它们,以及它们如何在"引擎盖下"工作?

注意:这应该是一个"分享你的知识"类型的问题,我自己回答了这个问题,但我不确定我是否正确设置了它.

objective-c automatic-ref-counting

31
推荐指数
1
解决办法
6230
查看次数