Objective c setObject:forKey:NSMutableDictionary的方法

Objective c setObject:forKey:NSMutableDictionary的方法,objective-c,cocoa-touch,Objective C,Cocoa Touch,第一个参数应该是对象吗?我下面的教程中的第一个参数是textFieldBeingEdited.text,它在.h文件中定义为 UITextField *textFieldBeingEdited textFieldBeingEdited不是一个对象,而text是该对象的一个属性吗 以下代码崩溃: [tempValues setObject:textFieldBeingEdited forKey:tagAsNum]; 如果我将其更改为以下值,则不会崩溃: [tempValues setObjec

第一个参数应该是对象吗?我下面的教程中的第一个参数是textFieldBeingEdited.text,它在.h文件中定义为

UITextField *textFieldBeingEdited
textFieldBeingEdited不是一个对象,而text是该对象的一个属性吗

以下代码崩溃:

[tempValues setObject:textFieldBeingEdited forKey:tagAsNum];
如果我将其更改为以下值,则不会崩溃:

[tempValues setObject:textFieldBeingEdited.text forKey:tagAsNum];

这没有意义,因为第一个参数应该是一个对象,而不是一个属性。

textFieldBeingEdited。text
是UITextField的属性,但它也是一个对象,类型为
NSString
textFieldBeingEdited。text
是UITextField的属性,但它也是一个对象,类型为
NSString

的属性是返回对象的getter方法和获取对象的setter方法(可选)的语法糖。
UITextField
对象的
text
属性提供了一个getter方法,该方法返回可存储在
NSDictionary
中的
NSString
对象

本质上,属性提供两种方法。例如,由
text
属性实现/合成的方法可能如下所示(为了示例而简化):


当您使用
object.text=@“Hello”
时,它将实际发送带有
@“Hello”
作为参数的
setText:
消息,当您使用
NSString*value=object.text
它将实际发送
文本
消息,该消息返回一个
NSString
对象。

属性是getter方法的语法糖,该方法返回一个对象,还可以选择使用setter方法获取一个对象。
UITextField
对象的
text
属性提供了一个getter方法,该方法返回可存储在
NSDictionary
中的
NSString
对象

本质上,属性提供两种方法。例如,由
text
属性实现/合成的方法可能如下所示(为了示例而简化):


当您使用
object.text=@“Hello”
时,它将实际发送带有
@“Hello”
作为参数的
setText:
消息,当您使用
NSString*value=object.text
它实际上会发送
文本
消息,返回一个
NSString
对象。

顺便说一句,因为您指的是UITextField,我猜您指的是iOS开发,它不使用Cocoa,它使用Cocoa Touch(此处标记为Cocoa Touch),它们非常相似,但有区别,如果你使用正确的标签,你就有更好的机会得到答案,因为正确的人会注意到这个问题(例如,有些人知道很多关于iOS开发的知识,并且有相关的标签,但不关心Mac OS X开发,并且忽略了这些标签),当你提到UITextField时,我猜你说的是iOS开发,它不使用Cocoa,它使用Cocoa Touch(这里标记为Cocoa Touch),它们非常相似,但有区别,如果你使用正确的标记,你就有更好的机会得到答案,因为正确的人会注意到这个问题(也就是说,有些人对iOS开发非常了解,并且在“感兴趣但不关心Mac OS X开发”下有相关标记,并忽略这些标记)。那么所有属性都是对象?不,某些属性可能是
int
,或者其他类型的非对象。那么所有属性都是对象?不,某些属性可能是
int
,或者其他类型的非对象。
- (NSString *) text
{
    return text;
}

- (void) setText:(NSString *) newText
{
    if (text != newText)
    {
        [text release];
        text = [newText copy];
    }
}