- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 GameWorld 中有一系列游戏对象,它们可以从那个世界中移除。问题是某些游戏对象引用了其他游戏对象。例如。 Player 类有一个对 Bird 的引用。 Bird 被随机从 GameWorld 中移除,但 Player 仍然有对它的引用。我目前做一个空检查来检查游戏对象是否仍然有效并且在世界上。但是,从数组中删除对象不会使该引用为空。那么我怎样才能让它为空呢?
这是一个例子:
// GameWorld creates bird
ArrayList<Object> gameObjects = new ArrayList<>();
Object bird = new Object();
gameObjects.add(bird);
// Player references it
Object referencedBird = gameObjects.get(0);
// later in GameWorld, another scope, there is no access to the 'bird' object, trying to remove the bird from the world
Object objectToRemove = gameObjects.get(0);
gameObjects.remove(0);
objectToRemove = null;
// back in the Player class
Debug.log("is null " + (referencedBird == null)); // false! I need it to be true
最佳答案
你不能让一个对象null
,你只能让一个引用null
。更新对对象的一个引用不会更改对同一对象的其他引用。
想一想我们的手机中都有同一个人的号码:如果我删除该号码,它不会从您的手机中删除。如果我们都删除它,那个人的电话号码不会不复存在:只是我们都不能调用他们。
你唯一能做的是:
referencedBird = null
;gameObjects.get(0)
而不是通过 referencedBird
变量来引用它。关于java - 如何通过仅在数组中引用来使对象为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38570436/
我想在每次处理 for 循环时将一个值加倍。到目前为止,我有以下代码: constexpr size_t doubleN(size_t n, size_t iteration) {
我对 Cabal 的运作方式感到困惑。我习惯了包管理器,作为其核心功能的一部分,能够轻松更新所有已更改的包,或者至少获取系统上有可用更新的包列表。但Cabal似乎缺乏这个功能。我错过了什么吗? 有没有
Oracle文档中有一句话: The elements are ordered using their natural ordering, or by a Comparator provided at
我在 XCode 6.1.1 中使用 Storyboard,我的一些 segues 在其他 View 后面穿过 Storyboard,使 Storyboard 看起来非常草率。我想知道是否有一种方法可
我想要一个 重叠在图像上,因此当用户点击它时,文件上传对话框打开,图像通过 AJAX 上传。 所以我希望 CSS 以这样一种方式设置字段样式,即只有浏览按钮可见(没有关联的框),或者更好的是,只有透明
我想对我正在调用的函数设置时间限制,这样如果它超时,它就会移动到脚本的下一部分(我正在运行 source("..."))。该函数是使用 Rcpp 编写的,具有 checkUserInterrupt()
这个问题在这里已经有了答案: Autofill OTP to the TextField when I receive message iPhone app (2 个答案) 关闭 4 年前。 每当我
创建一个包含您的 Entity Framework 模型和对象上下文的类库。然后向解决方案添加一个新的控制台应用程序。在控制台应用程序中,引用具有您的模型的项目。 现在在控制台应用程序中输入: sta
这个问题已经有答案了: What do querySelectorAll and getElementsBy* methods return? (12 个回答) 已关闭 5 年前。 我指的是使用 ja
我了解到我们可以从 url_launcher 启动谷歌地图、电子邮件和 Skype。在手机内置相机应用程序中打开的 URL 应该是什么? Android 和 iOS 都可以吗? const url =
我试图通过使用以下方式向我的单元测试项目公开一些内部结构: [assembly: InternalsVisibleTo("MyTest")] 但是我得到了错误: Error 1 Friend asse
我希望能够像真正的unix工具一样调用java程序,例如与 user/home> myapp [args] 而不是 user/home> java -jar path/to/myapp.jar [ar
我想直接调用jquery.animate来改变div的效果,但发现没有任何效果。 相反,我需要将其放入 setTimeout(..., 0) 中才能使其正常工作。 我想知道为什么我需要这样做,这是最好
FIXED MySQL 表相对于 DYNAMIC 表具有众所周知的性能优势。 有一个表tags,只有一个description文本字段。一个想法是将此字段拆分为 4-8 个 CHAR(255) 字段。
您会推荐 Iron Ruby、Iron Python 或 PowerShell 来使 C# 应用程序成为脚本宿主吗? 经过一些快速的修改,现在我倾向于 powershell 主要有两个原因(请注意,这
我是一名优秀的程序员,十分优秀!