ios – 公共与私人IBOutlets

我想知道当我需要在以下两种可能性之间从另一个视图控制器读取UILabel / UITextField的内容时,被认为是更好的做法:

1)只需在.h文件中为UITextField创建一个IBOutlet,并将其公开给所有人
2)在.h文件中创建一个NSString readonly属性,使其在实现文件中读写,并在每次私有UITextField更改时更新它.

在我看来,第二个选项看起来是一个更好的方法,因为它维护了OOP封装,但是对于我在每个视图控制器中使用的每个UITextField / UILabel来说,似乎有很多工作要做.

思考?
谢谢!

编辑:此外,如果我需要能够从外部设置IBOutlets,但在 – (void)prepareForSegue:方法中.所以我猜第二种选择是唯一的选择吗?

最佳答案 只需在视图控制器中创建getter方法,即可返回所需的数据.例如,对于UITextField:

- (NSString *)getTextFieldText {
   return self.myTextField.text;
}

无需以这种方式添加冗余属性(NSString *).
与封装一样,您隐藏了私有数据(即您的IBOutlets)并仅公开其他人所需的数据

点赞