第一个参数应该是一个对象吗?我正在关注的教程的第一个参数是textFieldBeingEdited.text,它在.h文件中被定义为
UITextField *textFieldBeingEdited
textFieldBeingEdited不是一个对象,text是该对象的属性吗?
以下代码崩溃:
[tempValues setObject:textFieldBeingEdited forKey:tagAsNum];
如果我将其更改为以下内容,则不会崩溃:
[tempValues setObject:textFieldBeingEdited.text forKey:tagAsNum];
这没有意义,因为第一个参数应该是一个对象,而不是一个属性。
答案 0 :(得分:2)
textFieldBeingEdited.text
是UITextField的属性,但它也是NSString
类型的对象。
答案 1 :(得分:1)
属性是getter方法的语法糖,它返回一个对象,也可以是一个接受对象的setter方法。 text
对象的UITextField
属性提供了一个getter方法,该方法返回可以存储在NSString
中的NSDictionary
对象。
基本上,属性提供了两种方法。例如,由text
属性实现/合成的方法可能如下所示(为了示例而简化):
- (NSString *) text
{
return text;
}
- (void) setText:(NSString *) newText
{
if (text != newText)
{
[text release];
text = [newText copy];
}
}
当您使用object.text = @"Hello"
时,它实际上会发送带有setText:
的{{1}}消息作为参数,当您使用@"Hello"
时,它实际上会发送NSString *value = object.text;
} message,返回text
个对象。