IBOutlet in objective-c
what does this开发者_如何学运维 line of code do :
IBOutlet UITextField *userName;
Maybe a little more detailed than changelog, but primarily posting just because I'd already typed it, it may help and it wouldn't format correctly as a comment, not because I disagree with his answer:
IBOutlet
is a no-op in code terms. So that declares an instance variable of type UITextField *
and with name userName
, exactly as if you'd typed just:
UITextField *userName;
What IBOutlet does is flag that member variable up as intended to be used as an outlet in Interface Builder (hence the IB). So when Interface Builder (or Xcode 4, since the two are now integrated) parses your class definition it knows to expose userName as something you can connect to a control.
IBOutlet exposes variables in Interface Builder.
Example: go to Interface Builder, right click the class containing that line, and you will see a element userName
. Unlike the other members of that class, it appears because it has been declared using IBOutlet
. If you drag a line from that element to a UITextField
control, any operation on the variable (eg: accessing its contents with userName.text) will be performed on the GUI element.
That is part of the connection of the userName property to your XIB file.
It allows you to access the control programatically and, in this case, change / retrieve its text for instance.
精彩评论