目标c中的对象分配

时间:2014-05-19 12:31:08

标签: objective-c memory-management dynamic-memory-allocation

-(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"];
}

只要调用函数(arr1arr2arr3指向同一个对象),它就会分配相同的内存位置。

如果调用此方法,如何创建NsMutableArray的新对象?

2 个答案:

答案 0 :(得分:3)

每次调用方法时,该代码都会为您创建一个新数组。问题是这一行:

NSLog(@"check address::::::> %p",&d2);

您正在记录d2的地址,该地址是堆栈中的位置。你需要记录d2本身,因为d2已经是一个指针。

NSLog(@"check address::::::> %p",d2);

答案 1 :(得分:0)

您正在使用& d2发送地址,但应该发送对象,如:

NSLog(@"check address: %p", d2);