[objrelease]之后引用计数仍然是1,此时应该释放它

2023-12-11

当我创建一个对象并检查其保留计数时,我得到了预期的 1。当我释放对象,然后再次检查保留计数时,它仍然是1。难道不应该释放该对象,并且保留计数为0吗?

NSMutableString *str=[[NSMutableString alloc] initWithString:@"hello"];
NSLog(@"reference count is %i",[str retainCount]);
[str release];
NSLog(@"reference count is %i",[str retainCount]);

I do如果我设置,则保留计数为 0str to nil第一的。这是为什么?


不要使用retainCount,在大多数情况下它不会达到您的预期。

你的第二个NSLog正在将已释放的内存作为对象进行访问。在这种特殊情况下,释放的内存仍然包含来自 NSString 的足够旧数据,这些数据刚刚被释放,以便程序在retainCount方法被调用。如果你运行这个NSZombieEnabled您可能会收到一条有关向已解除分配的实例发送消息的错误消息。

调用 nil 时返回 0 的原因是,在 nil 对象上调用时返回整数的方法将始终返回 0。

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

[objrelease]之后引用计数仍然是1,此时应该释放它 的相关文章

  • 创建一个包含 UIViewController 的 UIViewController

    我有一个UIViewController这允许我在视图中显示一些文本 我想添加一个输入法而不将其直接添加到此视图控制器中 此输入法将是一个按钮或一个UITextField 这个输入法会很多 但是每次都会用一个 从设置中选择它 所以我不会有一
  • 如何在 Swift 中调用 Objective-C 实例类型方法?

    我有一个 Objective C 类 如下所示 interface CustomObjectHavingData NSObject property nonatomic strong NSData objWithData instancet
  • 如何将 NSString 值 @"3.45" 转换为浮点数?

    如何将 NSString 值 3 45 转换为浮点数 3 45 float fCost NSDecimalNumber decimalNumberWithString 3 45 floatValue NSString val 3 45 fl
  • 使用 WebRTC 构建 iOS 本机应用程序

    我找了4天了 还是没找到 我构建了所有库并将其集成到我的自定义项目中 但我不知道应该采取哪些步骤才能使其正常工作 我在代码示例 解释中发现的唯一内容是 tech appear in 2015 05 25 Getting started wi
  • Objective-C - NSNotificationCenter 放在哪里?

    我有一个 NSNotificationCenter 选择器 把它放在哪里 在委托中 如果是 那么在哪里 在控制器中 方法也放在哪里 我需要解除分配 NSNotificationCenter 吗 NSNotificationCenter de
  • 管理一堆具有依赖关系的 NSOperation

    我正在开发一个创建内容并将其发送到现有后端的应用程序 内容是标题 图片和位置 没有什么花哨 后端有点复杂 所以这是我必须做的 让用户拍照 输入标题并授权地图使用其位置 为帖子生成唯一标识符 在后台创建帖子 上传图片 刷新用户界面 我使用了几
  • Swift 和 inout 参数中闭包的变量捕获

    我注意到 当 Swift 中的闭包捕获变量时 闭包实际上可以修改该值 这对我来说似乎很疯狂 也是一种获得可怕错误的绝佳方法 特别是当同一个 var 被多个闭包捕获时 var capture Hello captured func g thi
  • 如何在 iOS 上捕获的视频中添加水印[重复]

    这个问题在这里已经有答案了 我想知道是否有人可以告诉我如何实现这一目标 如果一直在考虑几个解决方案 从捕获的视频创建单独的图像 然后将它们合并到每个图像中 然后创建一个新的 AVAsset 听起来有点复杂 您不觉得吗 合并2个视频 一个是透
  • didReceiveRemoteNotification 将用户带到正确的视图

    我有一个聊天应用程序 当发送新消息时 我的服务器会发送推送通知 我遇到的问题是如何将用户带到正确的视图 我正在发送一个channelID在推送通知中 但我如何检索它并将用户带入实际对话 我使用此代码来检测何时单击推送通知 void appl
  • 如何向 UITableView 添加项目?

    我正在尝试将项目添加到UITableView有一个按钮 这是我的代码 In viewDidLoad repository NSMutableArray alloc initWithObjects nil ADD ITEM TO LIST r
  • 如何更改ios中FBSDKLoginButton中的默认登录按钮?

    如何自定义 Facebook 中的登录按钮 我不想使用 Facebook 默认登录按钮 对于 SDK 4 0 您应该添加一个按钮 并在按钮操作中使用以下代码 IBAction loginButtonClicked id sender FBS
  • 在 OS X 中,如何检测当前活动应用程序何时发生变化?

    尝试为 OS X 编写一个应用程序 该应用程序根据当前的应用程序触发行为 它不需要与它交互 它只需要知道何时更改以及更改内容 任何人都可以推荐哪些 API 可用于此目的吗 我的猜测是辅助服务中的某些内容 因为这是大多数应用程序 例如 Bet
  • 从哪里开始使用适用于 Retina 显示屏的 OpenGL 绘制程序

    我知道由于这里提到的错误 我无法将 GLPainter 示例从苹果适应到视网膜 在 Retina iPad 上显示全屏 CAEAGLLayer 时出现问题 https stackoverflow com questions 9757052
  • 自定义 UITableViewCell 错误

    我收到此错误 Terminating app due to uncaught exception NSUnknownKeyException reason
  • 如何在基于视图的应用程序中添加导航控制器

    我想向基于视图的应用程序添加导航控制器 我们如何以编程方式和使用 xib 文件来完成此操作 如果您需要在 uiviewcontroller 中合并导航控制器 您需要按如下方式初始化它 UIViewController yourViewCon
  • 使用 NSDateFormatter 和 TimeZone(不带 GMT 时间修饰符)将 NSDate 转换为 NSString

    我正在初始化我的 NSDateFormatter NSDateFormatter dateFormatter NSDateFormatter alloc init autorelease dateFormatter setLocale NS
  • Objective C 宏附加到字符串

    我认为这是一件非常简单的事情 但由于我是 iOS 开发和 Objective C 的新手 所以我无法弄清楚 define RESTFUL PATH PREFIX https gogch com gch restful define LOGI
  • 在两个可移动 uiview 之间画线

    我有一个带有节点的 滚动视图 UIViews 可以拖动 我正在尝试在选定的之间绘制边缘UIViews使用 calayer 但我不知道当视图位置发生变化时如何重新绘制线条 In my viewControllerI 类在节点数组中添加第一个和
  • 如何将NSTextView的格式化内容转换为字符串

    我需要将 NSTextView 的内容从 Mac 应用程序传输到 iOS 应用程序 我使用 XML 作为传输文件格式 所以我需要将 NSTextView 的内容 文本 字体 颜色等 保存为字符串 有什么办法可以做到这一点吗 一种方法是存档
  • 如何使用 MonoTouch 在 UIKeyboard 之上添加 UIToolbar?

    我按照 Obj C 中的示例进行操作定制 iPhone 键盘 https stackoverflow com questions 1610542 custom iphone keyboard 1612549 1612549但是 为了在 Wi

随机推荐