Objective c 目标C调用方法语法

Objective c 目标C调用方法语法,objective-c,syntax,call,Objective C,Syntax,Call,我对如何调用方法及其背后的语法有点困惑。有人能帮我分析两行代码吗?我有一大堆随机的问题 NSString *testString; testString = [[NSString alloc] init]; 这是怎么回事?正在创建一个名为testString的新指针。。。这意味着什么 然后在最后一行,它被设置好了,但我很困惑是什么。是: [[NSString alloc] init] 返回地址?是在NSString上调用方法“alloc”,然后在该输出上调用init吗?alloc和in

我对如何调用方法及其背后的语法有点困惑。有人能帮我分析两行代码吗?我有一大堆随机的问题

NSString *testString;  
testString = [[NSString alloc] init]; 
这是怎么回事?正在创建一个名为testString的新指针。。。这意味着什么

然后在最后一行,它被设置好了,但我很困惑是什么。是:

[[NSString alloc] init]
返回地址?是在NSString上调用方法“alloc”,然后在该输出上调用init吗?alloc和init都做了什么


谢谢。

alloc
/
init
是在Objective-C中创建新对象的标准方法。方法
alloc
NSObject
类的类方法,该类
NSString
(以及大多数其他Objective-C对象)是的子类。它所做的是为字符串
testString
分配内存,并返回该值。
init
方法返回一个空的不可变字符串。这相当于
[NSString]
,它返回完全相同的内容


NSString*testString所做的只是声明一个新变量,它不分配任何内存或初始化它。

NSString将分配一个物理内存地址,然后它将初始化一些方法,您可以定义自定义方法extend init。

请阅读所有,但是具体来说,*teststring和teststring是两个独立的东西吗?
*teststring
是实际的
NSString
对象,而
teststring
是指向
*teststring
的指针。所以在第一行之后,这两个东西都被创建了吗?不,第一行唯一做的事情就是声明一个变量。如果您试图获取该值,它将是未定义的。第二行分配内存并初始化变量,因此它有一个实际值,并且是“创建的”。对不起,我只是对如何有两件事感到困惑。我什么时候创建了testString?我想我只是在声明变量时创建了*testString。