【问题标题】:iOS: NSString keeps going nulliOS:NSString 一直为空
【发布时间】:2012-07-24 20:45:40
【问题描述】:

这是一个我似乎无法解决的奇怪问题。

在我的应用程序中,我将 tableviewcontroller 用于自定义对象数组(带有字符串标题),在 showDetailsForIndexPath 方法中,我将对象的字符串值分配给我称为 selectedString 的类变量。这是合成的(仅使用非原子),并且在上述方法中成功设置了值。当涉及到同一个类中名为 PrepareForSegue 的另一个方法时, selectedString 现在为空。我在这里错过了什么?

这是我在头文件中声明的方式(只是提取,这不是头文件的样子)

    NSString *chosenString;

@property (nonatomic) NSString *chosenString;

我假设 * 表示它正在启动,所以不需要在源文件中这样做?

【问题讨论】:

  • * 从什么时候开始表示对象是自动初始化的?请有人给我那个版本的objc。
  • 我是,理查德。我很抱歉,这只是一个快速的想法,因为我被难住了。
  • 我认为你的变量的范围可能是关闭的,并且在你初始化和设置它的方法之后它变成 null 的原因是它被释放了,我认为这是 Richard 的目标.我还没有对 ARC 有最大的了解,但请尝试将您的属性声明更改为 (nonatomic, weak) 或 strong。我认为它可能默认为弱,这可能是你的问题?只是我会玩的东西,如果我说的不正确,请随时纠正我。
  • 抱歉发了两次帖子,但你是如何设置标题的?您是否验证过数组中确实存在值,并且它们具有正确的值?也许是他们提前发布了。
  • @KarolyS 否,如果属性是 ARC 中的对象,则默认为 strong,如果不是对象,则默认为 assign

标签: ios nsstring null tableview


【解决方案1】:

Cocoa/UIKIt 对象需要在属性中使用“strong”:

@property (nonatomic, strong) NSString *chosenString;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 2015-04-14
    相关资源
    最近更新 更多