Objective c 解释对象变量声明和赋值
在此片段中:Objective c 解释对象变量声明和赋值,objective-c,object,pointers,syntax,Objective C,Object,Pointers,Syntax,在此片段中: NSString *testString; testString = [[NSString alloc] init]; 为什么,在第二行,我们不必写*testString=…来访问它实际指向的位置 在第一行之后,什么是*testString,什么是testString?创建NSString类型指针的第一行。C++和ObjuleC中的指针在声明时用星号(*)字符表示。您所说的这个指针的第二行称为“testString”,它引用了您在内存中分配的NSString对象的内存位置。您
NSString *testString;
testString = [[NSString alloc] init];
为什么,在第二行,我们不必写*testString=…
来访问它实际指向的位置
在第一行之后,什么是
*testString
,什么是testString
?创建NSString类型指针的第一行。C++和ObjuleC中的指针在声明时用星号(*)字符表示。您所说的这个指针的第二行称为“testString”,它引用了您在内存中分配的NSString对象的内存位置。您所创建的NSString类型指针的第一行。C++和ObjuleC中的指针在声明时用星号(*)字符表示。您所说的第二行指针“testString”引用了您在内存中分配的NSString对象的内存位置。所有对象都由指针引用。第一行
NSString * testString;
声明实例变量。如果变量类型是对象(类型id除外),则需要*
从那时起,对testString的引用就是指针
如果创建2个字符串。创建2个物理对象(在内存中)
NSString*testString=[[NSString alloc]init];
NSString*testString2=[[NSString alloc]init];
//将testString设置为testString2将永远丢失指向testString的指针
testString=testString2// 所有对象都由指针引用。第一行
NSString * testString;
声明实例变量。如果变量类型是对象(类型id除外),则需要*
从那时起,对testString的引用就是指针
如果创建2个字符串。创建2个物理对象(在内存中)
NSString*testString=[[NSString alloc]init];
NSString*testString2=[[NSString alloc]init];
//将testString设置为testString2将永远丢失指向testString的指针
testString=testString2// 这仅仅是因为我们影响了指针
[[NSString alloc]init]
返回指向NSString的指针
在Cocoa中,每个对象都是动态分配的(如C中的malloc
),每个NSObject
都是通过其指针/地址进行操作的(在这种情况下,许多ObjC程序员甚至不知道他们在操作指针而不是对象),这仅仅是因为我们影响指针
[[NSString alloc]init]
返回指向NSString的指针
在Cocoa中,每个对象都是动态分配的(如C中的malloc
),每个NSObject
都通过其指针/地址进行操作(在这种情况下,许多ObjC程序员甚至不知道他们在操作指针而不是对象)
为什么,在第二行,我们不必写*testString=…
来访问它实际指向的位置
init
方法返回指向对象的通用指针——其返回类型为id
testString
是指向NSString
的指针,它是一个对象,因此您将指针分配给另一个指针。取消引用分配给指针将是一种类型不匹配
变量名是放置某物的位置(内存地址的标签)。变量的类型是可以放在那里的类型。在指针的情况下,你放在它里面的东西也是一个内存地址。为了获得该地址,您需要取消对指针的引用。你可以放在那个地址上的东西和你放在指针上的东西是不同的
在第一行之后,什么是*testString
,什么是testString
在第一行之后,*testString
,或者testString
指向的东西是垃圾(实际上未定义)testString
是指向内存中地址的指针(4或8字节,具体取决于您的系统),它也是未定义的
在第二行之后,*testString
是一个NSString
对象testString
仍然是指向地址的指针,其中有一个有效的NSString
对象
为什么,在第二行,我们不必写*testString=…
来访问它实际指向的位置
init
方法返回指向对象的通用指针——其返回类型为id
testString
是指向NSString
的指针,它是一个对象,因此您将指针分配给另一个指针。取消引用分配给指针将是一种类型不匹配
变量名是放置某物的位置(内存地址的标签)。变量的类型是可以放在那里的类型。在指针的情况下,你放在它里面的东西也是一个内存地址。为了获得该地址,您需要取消对指针的引用。你可以放在那个地址上的东西和你放在指针上的东西是不同的
在第一行之后,什么是*testString
,什么是testString
在第一行之后,*testString
,或者testString
指向的东西是垃圾(实际上未定义)testString
是指向内存中地址的指针(4或8字节,具体取决于您的系统),它也是未定义的
在第二行之后,*testString
是一个NSString
对象testString
仍然是指向地址的指针,其中有一个有效的NSString
对象