在 NSString 的情况下,对自动释放对象的周引用不会被释放

2023-11-30

Why temp即使对象被声明为,也不会被释放并设置为 nil__week。但如果 Person 反对,它会按预期工作。做NSString对象内存生命周期的处理方式不同?如何?

@interface Person : NSObject

     @property(nonatomic, strong) NSString *name;

     - (instancetype)initWithName:(NSString *)name;
     + (Person *)personWithName:(NSString *)name;
@end

@implementation Person

    - (instancetype)initWithName:(NSString *)name {
        if (self = [super init]) {
            self.name = name;
        }
        return self;
    }

    + (Person *)personWithName:(NSString *)name {
        return [[self alloc] initWithName: name];
    }
@end

- (void)viewDidLoad {
      __weak NSString *temp;
      @autoreleasepool {
          NSMutableArray *data = [[NSMutableArray alloc] initWithObjects:@"firstString", @"secondString", nil];
          temp = data[0];
          [data removeObjectAtIndex:0];
      }
      NSLog(@"%@", temp);//prints firstString instead of null

      __weak Person  *person ;
      @autoreleasepool {
          NSMutableArray *persons = [[NSMutableArray alloc] initWithObjects:[Person personWithName:@"Steve"], [Person  personWithName:@"Harry"], nil];
          person = persons[0];
          [persons removeObjectAtIndex:0];
      }
      NSLog(@"%@", person.name);//prints null as expected because person object will be deallocated,
}

常量字符串永远不会被释放。还有其他对象永远不会被释放,例如某些 NSNumber 对象(在 64 位版本上,大多数 NSNumber 对象)。

这让我想知道你在做什么。如果 NSString* 变成 nil (它不会),你想做什么?

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

在 NSString 的情况下,对自动释放对象的周引用不会被释放 的相关文章

  • “目标文件格式无法识别、无效或不合适”Xcode 错误

    我看不出有任何理由说明为什么这条消息应该出现在日志的末尾 Users Val Library Developer Xcode DerivedData Mathematics dzakmzlewrmgvibasvuixiwmkwwp Buil
  • 如何在 viewDidLayoutSubviews 中获得正确的视图高度?

    void viewDidLayoutSubviews super viewDidLayoutSubviews NSLog viewDidLayoutSubviews view height f self view frame size he
  • Morphic 中的 Morph 和 Cocoa 中的 NSView 有什么区别?

    我想了解 Morphic 的独特之处 Morphic 比 NSView 或任何其他graphics类只允许重新实现一组有限的功能 Morphic 是一个可塑性极强的 UI 构建工具包 Morphic 背后的一些设计理念明确了这一意图 包括一
  • clang:错误:链接器命令失败,退出代码 1 - 未找到库

    我在构建项目时遇到了一些问题 自上周以来 由于某种原因 我收到了以下错误 并且无法摆脱它 Ld Users Nathan Library Developer Xcode DerivedData SmartPic elnbgmemojraij
  • 调整图像大小 Objective-C [重复]

    这个问题在这里已经有答案了 我正在尝试缩小使用 iPhone 4 及更高版本拍摄的 Objective C 图像的尺寸 以便我可以尽快将其发送到服务器 目前 全尺寸图像需要很长时间才能完成 目前我正在尝试的缩小规模是 CGSize imag
  • iOS心率检测算法

    我正在尝试在我正在开发的应用程序中实现心跳记录功能 首选方法是使用 iPhone 的摄像头 在灯亮的情况下 让用户将手指放在镜头上 然后检测视频源中与用户心脏相对应的波动 我通过以下堆栈溢出问题找到了一个非常好的起点here https s
  • 从 NSString 中删除字符?

    NSString myString A B C D E F G 我想删除空格 因此新字符串将是 ABCDEFG 你可以使用 NSString stringWithoutSpaces myString stringByReplacingOcc
  • ARC-- 隐式桥接

    如果我理解正确的话我们可以分类void as a C 可保留指针类型 因此 将其分配给 Objective C 对象将被隐式桥接 但是 编译器会引发需要显式桥接的错误 const void somePtr void 0x12345678 v
  • 在 iOS 7 中使用新的格式字符串说明符配置字典(复数支持)

    我正在尝试使用 iOS 7 中对复数的更复杂本地化的新支持 我创建了一个 stringsdict 文件 根据 Foundation 发行说明 以及 Cocoa WWDC 会议中的新增功能 中的信息进行格式化 我已经验证 stringsdic
  • 如何使用 AVAssetWriter 将视频裁剪成方形 iOS

    我正在使用 AVAssetWriter 录制视频 我希望能够将视频裁剪成与顶部有偏移的正方形 这是我的代码 NSDictionary videoCleanApertureSettings NSDictionary dictionaryWit
  • 与 AVAudioPlayer 同步播放 MPMoviePlayerController

    我正在尝试将电影添加到游戏的介绍中 这部电影没有声音 音乐 不过 我确实有背景音乐循环播放 音乐有些特殊 音乐的前奏和电影一样长 然后节奏加快了一点 我遇到的问题是 在某些设备 例如 iPod 4G 上 播放音乐太快 这基本上会破坏电影顺序
  • Xcode 4:如何查看控制台?

    我似乎找不到在 XCode 4 中运行控制台 以显示 NSLog 注释 的方法 以前版本的 XCode 的正常方法不起作用 有谁知道如何实现这一目标 您需要单击日志导航器图标 左侧边栏最右侧 然后在左侧边栏中选择您的调试 运行会话 您将在编
  • 在核心数据中伪造动态模式?

    通过阅读有关 Core Data 的 Apple 文档 我了解到当您需要动态模式时不应该使用 Core Data 如果我想为用户提供创建自己的属性的能力 那么在核心数据模型中 如果我创建一些 虚拟 属性 例如 自定义十进制 1 自定义十进制
  • 子类化 UITabBarController 的替代方案

    看来 UITabBarController 不应该被子类化 您建议我如何在可旋转的 DetailView 中实现 TabBarController 谢谢你 您可以向控制器添加一个委托
  • 在 iPhone 模拟器中设置当前用户位置

    有没有办法在 Xcode 4 上的 iPhone 模拟器中设置当前用户位置 我希望模拟器显示除库比蒂诺之外的其他位置 是的 从模拟器的菜单中选择Debug gt Location gt Custom Location
  • Crashlytics 集成问题

    我在整合时遇到问题崩溃解决方案进入我的项目 按照网站上的说明进行操作 但不久之后安装 Crashlytics mac 应用程序 添加新的构建脚本 粘贴脚本 然后我构建我的项目以继续 然后应用程序崩溃了 Update 当时 我忘记在 AppD
  • 对于 iOS 6,如何在后台线程上加载数据然后更新 UI?

    有很多方法可以做到这一点 但 iOS 6 应用程序当前 现代 正确的方法是什么 这就是我现在正在做的事情 void viewDidLoad super viewDidLoad weak MyViewController weakSelf s
  • 在 Swift 中从另一个 ViewController 访问变量

    我有以下内容ViewController class PageContentViewController UIViewController var pageIndex Int 我如何访问pageIndex来自另一个 ViewControll
  • iOS 中tableview 的动态搜索

    I ve a tableview和我实现搜索方法的文本字段 现在 当我在其中写入一些值时textfield然后点击搜索按钮 然后在tableview 但是 我希望它是动态的 意味着我开始输入的那一刻textfield它应该开始搜索而不点击任
  • 错误:CUICatalog:提供的资源名称无效:(空),或无效的比例因子:2.000000

    TableViewApplication 1458 70b CUICatalog Invalid asset name supplied null or invalid scale factor 2 000000 使用 TableViewC

随机推荐