Ios 公共与私人IBO网点
我想知道当我需要在以下两种可能性之间从另一个查看控制器读取Ios 公共与私人IBO网点,ios,oop,private,encapsulation,iboutlet,Ios,Oop,Private,Encapsulation,Iboutlet,我想知道当我需要在以下两种可能性之间从另一个查看控制器读取UILabel/UITextField的内容时,什么被认为是更好的做法: 1) 只需在.h文件中的UITextField中创建一个IBOutlet,并向所有人公开 2) 在.h文件中创建一个NSStringreadonly属性,在实现文件中设置为readwrite,并在每次private
UILabel
/UITextField
的内容时,什么被认为是更好的做法:
1) 只需在.h文件中的UITextField
中创建一个IBOutlet
,并向所有人公开2) 在.h文件中创建一个
NSString
readonly属性,在实现文件中设置为readwrite,并在每次privateUITextField/UILabel
,似乎都需要做很多工作
想法?
谢谢
编辑:此外,如果我需要能够从外部设置
IBOutlets
,但使用-(void)prepareforsgue:
方法。所以我想第二个选项是唯一的选项?只需在视图控制器中创建getter方法,以返回所需的数据。例如,UITextField
:
- (NSString *)getTextFieldText {
return self.myTextField.text;
}
无需以这种方式添加冗余属性(NSString*)。
与封装一样,您隐藏了私有数据(即您的IBOutlet)并仅公开了其他人所需的数据,因此我必须在头文件中为我在实现文件中声明的每个IBOutlet创建一个getter方法,就像您希望访问的任何其他数据一样。你只是不暴露整个outlets,如果我还需要从外部设置它呢?那么,我必须为每个IBOutlet创建一个setter方法吗?如果您需要获取和设置,那么您的第一种方法可能是最简单的方法,但任何其他方法都需要为要公开和更改的每个数据创建一个getter/setteroutside@AnatolyAnatoly对的如果您使用的是故事板,UIKit对象的插座将不会起任何作用(因为
prepareforsgue:
在awakeFromNib
之前被调用,这是插座第一次对您可用。)