1

我正在加载一个笔尖:

ContentViewController *theController = [[ContentViewController alloc] initWithNibName:@"ContentView" bundle:nil];

上面有标签。视图控制器有一个 IBOutlet 的 UILabel 和一个 @property 的保留和综合变量。当我从另一个类加载上述笔尖并将标签的文本属性引用为:

theController.myLabel.text = @"testing...";

myLabel 的地址为 0x0。在分配之前,文本是“无效的”。赋值后,它的类型是 ContentViewController。内存管理存在一些问题。有任何想法吗?

4

3 回答 3

3

在 init 调用中不会立即建立连接。在访问视图控制器的view属性之前不会加载主视图,这会导致所有其他 IBOutlets 也被设置。如果您在加载视图之前尝试访问 IBOutlet,它将为零。通常,分配代码应该进入-viewDidLoad. 如果您需要在将视图添加到屏幕之前执行某些操作,只需在将任何内容分配给任何 IBOutlets 之前访问该视图:

theController.view;
theController.myLabel.text = @"testing...";
于 2009-05-24T14:12:13.660 回答
0

你有没有写任何代码,

-(void)loadView {  }

方法?

如果是这样,则未分配 IBOutlet 对象。
尝试评论此功能。
如果你需要这个函数被触发调用 loadNibnamed: 方法来调用那个 viewController。

于 2011-03-24T07:47:07.600 回答
0

ViewController 仅按需加载其视图。赋值中的隐式getMyLabel调用会导致加载视图并连接出口。至于类型错误,我不知道为什么myLabel会以ContentViewController. 您应该检查接口生成器中的连接并确保它们正确连接。

于 2009-05-23T04:50:29.100 回答