Is the first parameter supposed to be an object? A tutorial I'm following has the first parameter being textFieldBeingEdited.text, where it is defined in the .h file as
UITextField *textFieldBeingEdited
Isn't textFieldBeingEdited an object, and text is a property of that object?
The following code crashes:
[tempValues setObject:textFieldBeingEdited forKey:tagAsNum];
If I change it to the following then it doesn't crash:
[tempValues setObject:textFieldBeingEdited.text forKey:tagAsNum];
That doesn't mak开发者_如何学Ce sense though since the first argument is supposed to be an object, and not a property.
textFieldBeingEdited.text
is a property of UITextField, but it is also an object, of type NSString
.
A property is syntactic sugar for a getter method that returns an object and optionally a setter method that takes an object. The text
property of the UITextField
object provides a getter method that returns an NSString
object that can be stored in an NSDictionary
.
Essentially, a property provides two methods. For example, the methods implemented/synthesised by the text
property may look like this (simplified for the sake of the example):
- (NSString *) text
{
return text;
}
- (void) setText:(NSString *) newText
{
if (text != newText)
{
[text release];
text = [newText copy];
}
}
When you use object.text = @"Hello"
, it will actually send the setText:
message with @"Hello"
as the argument, and when you use NSString *value = object.text;
it will actually send the text
message, which returns an NSString
object.
精彩评论