-2

我必须在这里遗漏一些基本的东西。当我用来设置在UITableViewCell[NSString stringWithFormat]中显示的对象的属性时,它显示为空。如果我只是正常设置属性,即显示正常。代码和结果如下。property = @"Item One"

使用这个: 在此处输入图像描述

结果是:

在此处输入图像描述

然而日志显示: 在此处输入图像描述

这将表明该属性已设置。有人可以带我去这里上学吗?

编辑 保留不足是问题所在。

我的道具看起来像这样:@property (weak, nonatomic) NSString *name

将其更改为:@property (strong, nonatomic) NSString *name

修复了问题。我知道这意味着我保留了对该属性的强烈引用,但在这一点上,是否有“我刚从大学毕业并自学 Obj-C”来解释内存中发生了什么导致这个问题?

4

2 回答 2

1

由于常量字符串有效,我的第一个想法是您未充分保留 name 属性,尽管如果这是真的,我很惊讶您没有崩溃。

编辑:

看到你的代码后,问题就来了。weak只要该值在其他地方保持活动状态,属性就只保留一个值。一个常量字符串永远存在,所以在这里分配一个常量字符串是可行的。但是,如果您分配一个计算值,那么没有任何东西拥有它,因此没有任何东西可以让它保持活力,因此您的弱属性最终会以nil.

于 2013-09-16T01:48:12.910 回答
0

我假设您要分配nametextUILabel 的属性。

标签是:

  1. 隐藏(检查它的隐藏属性)
  2. 不在视图层次结构中(检查它的 superview 属性)
  3. 不足以显示文本(调用sizeToFit将解决此问题)
  4. 与背景颜色相同(不太可能)

最难解决的问题是它是否为零。你还没有告诉我们细胞来自哪里,但这里有一些可能性。

  1. IBOutlet 未在 xib/storyboard 中设置
  2. 您没有以正确的init方法实例化它。如果您正在实例化它,请确保正在调用特定的 init 变体。
于 2013-09-14T23:48:27.097 回答