Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ARC环境下iOS内存管理方法_Ios_Objective C_Memory Management_Memory Leaks_Automatic Ref Counting - Fatal编程技术网

ARC环境下iOS内存管理方法

ARC环境下iOS内存管理方法,ios,objective-c,memory-management,memory-leaks,automatic-ref-counting,Ios,Objective C,Memory Management,Memory Leaks,Automatic Ref Counting,如果我一直调用这个方法,内存方面会发生什么? (请不要评论代码,这只是一个思想示例。) tempResultaray是否会继续增加引用计数,或者在返回tempResultaray后ARC是否会执行此操作,并解除锁定?ARC将may(请参阅注释)在返回前调用tempResultaray。之后会发生什么,取决于程序的其他部分。下次调用此方法时,将创建一个新的tempsultarray,并重复该过程。关键在于为您完成内存管理。如果您继续调用此方法,则无需担心。“如果我继续调用此方法,内存方面会发生什么

如果我一直调用这个方法,内存方面会发生什么? (请不要评论代码,这只是一个思想示例。)


tempResultaray
是否会继续增加引用计数,或者在返回
tempResultaray
后ARC是否会执行此操作,并解除锁定?

ARC将may(请参阅注释)在返回前调用
tempResultaray
。之后会发生什么,取决于程序的其他部分。下次调用此方法时,将创建一个新的
tempsultarray
,并重复该过程。

关键在于为您完成内存管理。如果您继续调用此方法,则无需担心。“如果我继续调用此方法,内存方面会发生什么情况?”您可以并且应该使用工具来回答此问题。ARC编译器可能会添加自动释放调用。ARC优化器非常聪明,可以删除不必要的保留/释放/自动释放调用(使用交叉方法优化)。甚至在运行时,被调用函数也可以检查调用方堆栈并决定是否需要自动释放。还有一个问题:如果通过返回到具有指向NSMtableArray对象的强指针的属性来传递tempResultArray,那么tempResultArray会怎么样。(例如自我结果)?分配时(或同等情况下,ARC允许)会发送一条
retain
消息。但是请记住,这与方法范围内的指针不同。这是一个堆栈指针,当堆栈帧移动时,它就会消失。数组本身在堆上,并一直保留,直到其保留计数变为0。
-(NSMutableArray*)searchForItemsWithString:(NSString *)searchString
{
    NSString *baseUrl = @"http://www.myService.com/";

    NSURL *tempUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",baseUrl, searchString]];

    NSMutableArray *tempResultArray = [[NSMutableArray alloc ] initWithContentsOfURL:tempUrl];

    return tempResultArray;
}