我们为了在其他视图中使用它而为变量创建属性。对于IBOutlets,我们也是这样做的。但并不总是为了使用它们。我们是否需要为我们在xib中刚刚创建的每个IBOutlet都创建一个属性?或者这只是一种好习惯?
我们为了在其他视图中使用它而为变量创建属性。对于IBOutlets,我们也是这样做的。但并不总是为了使用它们。我们是否需要为我们在xib中刚刚创建的每个IBOutlet都创建一个属性?或者这只是一种好习惯?
@interface something : NSObject {
//This one needs to be RELEASED then set to nil in both viewDidUnload, and dealloc.
IBOutlet UILabel * myLabel;
//also cannot be accessed outside of "something" class (technically it can, but don't do that)
//I NEVER declare my outlets this way.
}
//This one can just be set to nil in viewDidUnload and dealloc
@property (nonatomic, retain) UILabel * myOtherLabel;
//it can also be accessed from mySomething.myOtherLabel by any other class.
//This one just works. I don't own it, the view owns it, so I don't retain/release.
@property (nonatomic, assign) UILabel * myOtherOtherLabel;
//It also provides access to outsiders.
//I wouldn't recommend using this type if you want to change the value though.
并不需要为每个IBOutlet
创建一个属性。
具体来说,如果你只从声明该IBOutlet
的类中访问它,那么你并不一定需要这个属性。如果有一个属性,你可以获得属性提供的优势,但你总是可以直接引用该IBOutlet
。
如果你计划从另一个类中访问该IBOutlet
,那么一个属性是很有用的,这样你就不必自己定义setter和getter方法。
如果您只想在创建XIB的视图中使用IBOutlet,则无需在此处设置属性。但是,使用它是一个好习惯,不是每次为视图创建IBOutlet时都必须使用。
如果你要显示的内容不会改变,那么可以跳过为该小部件创建属性或IBOutlet。
例如,在一个屏幕上,你有一个标签和一个文本框,标签始终具有字符串“名称:”,而文本框用于获取用户输入,你只需为文本框创建引用输出来访问用户输入的数据。在这里为标签创建引用输出没有任何意义。
希望你明白了。
属性是Objective-C中的一个特性,它允许我们自动生成访问器,并具有一些其他的附加好处。所以像Praveen S给你举了一个关于Label和UIText的例子,我只是稍微探索了一下。 假设你与UILabel没有任何关系,你不需要设置属性,但如果你要求用户在UITextField中输入一些文本,你必须设置属性。如果你使用retain设置属性,你必须在viewDidUnload中释放它。