Objective-C:self = nil 不会将实例设置为空值

2023-12-29

我有下一个代码,非常简单:

//SecondViewController.m
if(contentRvController==nil){
    contentRvController = [[ContentView alloc] 
    initWithNibName:@"ContentView" bundle:nil]; //ContentView is a custom UIViewController
    ....
    [self.view addSubview:contentRvController.view];
}
else{
    contentRvController.view.hide = YES;
    [contentRvController release];
    contentRvController = nil;
}

基本上,当从按钮启动代码时,如果 UIViewController 不存在,则创建一个并显示它(它旨在显示在更大的主桌面视图上,这是 SecondViewController 视图)。如果它已打开,请将其关闭并删除以释放资源。

现在,contentRvController 是 ContentView 的一个实例,一个自定义的 UIViewController。它有自己的关闭 UIButton,其中 IBAction 是这样的:

//ContentView.m
- (IBAction) closeView {
    self.view.hidden = YES;
    [self release];
    self = nil;
}

现在,当从 SecondViewController 触发时,释放 contentRvController 可以正常工作(或者在我看来),视图出现并消失。但是,当点击 ContentView 关闭按钮时,它也会关闭视图,但是当尝试再次打开它时if(contentRvController==nil)回报FALSE,所以我必须点击两次按钮才能执行才能再次显示 ContentView。

在我看来,这self = nil;工作方式不同于contentRvController = nil;尽管它应该指向同一个地方,但我对此迷失了。

任何想法?来自墨西哥的欢呼


它们的工作方式相同,但它们所做的事情与您认为的不同。这=不影响物体;它影响指向该对象的变量。将一个变量设置为指向 nil 不会更改程序中任何其他变量的值。相似地:

int a = 5;
int b = a;
b = 6;
printf("A is %d and B is %d\n", a, b);

这将打印“A is 5 and B is 6”——因为将 B 设置为新值不会更改 A 的值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Objective-C:self = nil 不会将实例设置为空值 的相关文章

随机推荐

  • 我可以将对象保存到 app.config 文件中吗?

    我需要为我的应用程序使用一个配置文件 它将保存每个实体的详细信息列表 例如
  • 检查php会话是否不存在

    我有以下 php 代码 哪个应该检查会话是否不存在 如果不存在 则用户重定向 问题是这个条件始终为真 即使会话确实存在 我的问题是如何修复它 尝试用 SESSION like
  • 隐藏 UITableView 搜索栏

    我有一个 UITableViewController 它以标准方式设置了 UISearchDisplayController 搜索栏位于 tableView 内 我希望搜索栏一开始是隐藏的 真正隐藏 而不仅仅是滚动消失就像在这个解决方案中一
  • 在 Haskell 中过滤斐波那契数列

    我正在尝试过滤包含斐波那契数字的列表 我需要的只是奇数 并且小于或等于N 这是我到目前为止所拥有的 fib n n 0 0 n 1 1 otherwise fib n 1 fib n 2 fibs n a a lt fib x x lt 1
  • NodeJS“readline”模块不输出提示

    使用 NodeJS 我试图制作一个 笔记 管理器只是为了好玩 但是当我尝试使用 readline question 来获取用户关于他们想要做什么的输入 即创建一个新笔记 删除一个笔记 则不会显示提示 关于如何解决这个问题有什么建议吗 项目链
  • 在堆栈上分配大于页面大小的缓冲区会损坏内存吗?

    在Windows中 堆栈的实现方式如下 指定的页面后面是提交的堆栈页面 它的保护标志受到保护 因此 当 thead 引用受保护页面上的地址时 会出现内存错误 这使得内存管理器将受保护页面提交到堆栈并清除该页面的受保护标志 然后保留一个新页面
  • Flask-restful 在同一个类中具有 get/ 和 post 与 json

    如果 api add resource User user 则用户的 get 方法有效 该行未注释 另一个 api add resource 是 反之亦然 使 post 方法起作用 我怎样才能让这两条路径都起作用 from flask im
  • 处理命令行参数时清理控制流 [C#]

    我正在处理一个基于命令行参数执行大量 if else 分支的程序 这是 C 语言 但我确信它也适用于 Java C 等 以下是总体概述 if args Length 0 do something if args Length gt 0 ar
  • 无法远程访问9200端口

    刚刚开始使用elasticsearch 5 4 0 首先我将其安装在Mac 本地 上 然后安装在服务器上 在 Mac 中 当我在浏览器中运行 http 本地主机 9200 http localhost 9200 它向我显示输出 name N
  • Json解析Python子进程

    这是代码 inputDomain subprocess Popen cat etc localdomains shell True stdout subprocess PIPE domains inputDomain stdout read
  • 对话框打开时布局混乱

    我面临着一个非常奇怪的错误 其中一个布局的父级是 ConstraintLayout 当对话框打开时 后面的布局会自动开始收缩和移动 请参阅随附的 gif 来了解有关该错误的信息 请检查我的代码 看看我是否做错了什么 这是我的布局
  • 如何动态设置UIScrollView的内容大小

    我有关于UIScrollview 故事是我有一个UIView名为 ChartsView 我通过重写方法自己重新绘制它drawRect 绘图的内容是动态生成的 所以直到运行时我才知道它的大小 问题是如何 在哪里可以动态设置其超级视图 scro
  • PowerShell 中是否提供联合类型

    类型化数组就像 arrIntOnly Int 1 2 3 对于确保所有元素都是有效类型很有用 但是是否可以定义多种类型 例如 arrIntOrString Int String 1 two 3 PowerShell 可以not有联合数据类型
  • 根据同一列表中的下一个项目从列表中删除项目

    我刚刚开始学习 python 这里有一个蛋白质序列的排序列表 总共 59 000 个序列 其中一些是重叠的 我在这里列出了一个玩具清单 例如 ABCDE ABCDEFG ABCDEFGH ABCDEFGHIJKLMNO CEST DBTSF
  • 针对 Android、iPhone 等集成的 .NET Web 服务格式/协议的建议

    我正在为我的 ASP NET MVC 3 网站构建一个 Web 服务 理想情况下 我希望所有客户端 我的网页 iPhone 应用程序 Android 应用程序 Windows Phone 7 应用程序等 使用相同的服务层来加载和保存数据 我
  • Ajax 重新加载后 jQuery mCustomScrollbar 消失

    like here https stackoverflow com questions 13231199 jquery mcustomscrollbar not working on ajax content 24632046 246320
  • 如何在 Cython 中创建固定长度、可变的 Python 对象数组?

    我需要有一个 python 对象数组用于创建 trie 数据结构 我需要一个像元组一样长度固定 像列表一样可变的结构 我不想使用列表 因为我希望能够确保该列表是exactly正确的大小 如果它开始分配额外的元素 随着 trie 变大 内存开
  • 使用 cxf 处理 jax-rs webservice 中的身份验证和授权

    我有一个带有jsps的网络应用程序 我没有使用任何 struts 或 mvc 框架 我们使用 Apache CXF 构建 JAX RS 服务 现在我想做以下事情 允许用户使用用户名和密码登录 对于所有后续对 Web 服务的调用 应使用相同的
  • 取消 RX.Net Observer 正在进行的 OnNext 方法

    正如我原来的问题中所述 参见将相互依赖的事件流与 RX Net 关联起来 https stackoverflow com questions 26640548 correlate interdependent event streams w
  • Objective-C:self = nil 不会将实例设置为空值

    我有下一个代码 非常简单 SecondViewController m if contentRvController nil contentRvController ContentView alloc initWithNibName Con