-(NSMutableArray*)functionCheck :(NSString *)str
{
NSMutableArray*d2=[[NSMutableArray alloc] init];
NSLog(@"check address::::::> %p",&d2);
[d2 insertObject:str atIndex:0];
return d2;
}
-(NSString*)functionTest :(NSString *)str
{
NSMutableArray *arr1=[self functionCheck :@"dee"];
NSMutableArray *arr2=[self functionCheck :@"deep"];
NSMutableArray *arr3=[self functionCheck :@"deepti"];
}
只要调用函数(arr1
,arr2
和arr3
指向同一个对象),它就会分配相同的内存位置。
如果调用此方法,如何创建NsMutableArray
的新对象?
答案 0 :(得分:3)
每次调用方法时,该代码都会为您创建一个新数组。问题是这一行:
NSLog(@"check address::::::> %p",&d2);
您正在记录d2的地址,该地址是堆栈中的位置。你需要记录d2本身,因为d2已经是一个指针。
NSLog(@"check address::::::> %p",d2);
答案 1 :(得分:0)
您正在使用& d2发送地址,但应该发送对象,如:
NSLog(@"check address: %p", d2);