【发布时间】:2020-09-16 12:22:49
【问题描述】:
我有以下情况,我发送属性self.view,它包含一些视图,作为以下方法的参数:
- (void) someMethod:(UIView *)view
{
[UIView animateWithDuration:.25 delay:0 options: UIViewAnimationOptionAllowUserInteraction animations:^
{
//blablabla
}
completion:^(BOOL finished)
{
[view removeFromSuperview];
view = nil;
}];
}
编译器告诉我的地方:
变量不可赋值(缺少 __block 类型说明符)
我确实尝试将块类型说明符添加到参数中,但这不起作用。我想要这样当我将视图设置为nil 时,它也会将属性self.view 设置为nil。我很难解决这种情况,尤其是当你把块扔进去的时候,我想通常我需要一个双指针?
我想知道解决此问题的最佳方法是什么,我可以使用方法块中的参数将self.view 转换为nil。
【问题讨论】:
-
您认为这将如何运作?你认为什么时候会设置为
nil?view只是一个参考;你认为消除该引用会做什么? -
@matt 忽略我之前对您评论的回复。我已经更新了问题以使其更加清晰(抱歉,这些记忆内容有时让我感到困惑)。
-
对,但是将
view参数设置为nil,即使您要这样做,也不会对self.view产生任何影响。这就是我的观点。 -
@matt 是的,我刚刚意识到这一点。我想我要问的是如何通过将 self.view 作为参数发送到此方法来完成在完成块中将 self.view 设置为 nil ?我现在正在尝试使用双指针作为参数,但正在努力解决这个问题。
-
我不明白你为什么要这么做。这里的大背景是什么?
标签: ios objective-c cocoa-touch objective-c-blocks