Iphone 弧与局部变量

Iphone 弧与局部变量,iphone,objective-c,automatic-ref-counting,Iphone,Objective C,Automatic Ref Counting,我目前正忙于将代码转换为ARC,在使用局部变量时遇到了一些麻烦。由于它们只在编译器认为我需要它们时才被保存在内存中,所以它们通常在最后一次方法调用之后被释放 不幸的是,我的应用程序包含一个带有自定义内容的HUD,比如UIButtons。这些选择器指向HUD本身,因此我总是获得EXC\u BAD\u访问权限,因为控制器在实例化后被释放 除了在我的类标题中创建一个实例变量之外,还有什么解决方案吗?尽管这实际上与在标题中放置一个iVar是一样的,但至少可以通过在.m文件的顶部创建一个私有类别来保持整洁

我目前正忙于将代码转换为ARC,在使用局部变量时遇到了一些麻烦。由于它们只在编译器认为我需要它们时才被保存在内存中,所以它们通常在最后一次方法调用之后被释放

不幸的是,我的应用程序包含一个带有自定义内容的HUD,比如UIButtons。这些选择器指向HUD本身,因此我总是获得EXC\u BAD\u访问权限,因为控制器在实例化后被释放


除了在我的类标题中创建一个实例变量之外,还有什么解决方案吗?

尽管这实际上与在标题中放置一个iVar是一样的,但至少可以通过在.m文件的顶部创建一个私有类别来保持整洁,该类别定义了可以保存UIButtons的属性

@interface MyClass ()
@property (nonatomic, retain) UIButton *myButton;
@end

@implementation MyClass
@synthesize myButton;

....

self.myButton = thingThatisHoldingYourButton;

// Now for the block

我不太确定我是否了解您的具体情况,但有些东西必须保留对控制器的引用。。。如果你真的觉得有必要,你也可以使用编译器指令说你自己维护内存,只是保留它。但是,谁会发布它呢?但是我对
addSubview
的方法调用没有保留在控制器周围吗?我的意思是,当我们必须手动执行内存管理时,它确实执行了,那么为什么它停止工作呢?它保留了视图,但没有保留控制器。控制器必须单独维护。。还有,拥有主控制器的视图控制器确实希望知道有一个子控制器。我认为它以前是有效的,因为你在内存中有一个bug,ARC现在已经清除了这个错误。所以除了声明一个插座,没有别的机会了,不是吗?像
\u block
这样的事情怎么样?就像我说的,我对你的情况感到困惑。仅在块中使用控制器应该会保留它,但听起来好像在块执行完毕后需要激活控制器(因为有一个对控制器的回调)。如果是这种情况,你需要在某处保留一个引用,而不是在块中。