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。