美文网首页
内存问题

内存问题

作者: liboxiang | 来源:发表于2018-04-23 23:42 被阅读8次

可重复的内存增长才是真正的问题

Snip20180423_1.png

应该避免内存的过高增长

Snip20180423_2.png

ARC存在的内存问题

block问题

block默认强应用内部的对象,因此以下情况会造成循环引用


Snip20180423_3.png

__weak

  • __weak引用使用过程中可能为空


    Snip20180423_4.png
  • 避免过度使用__weak,__weak的使用是需要消耗资源的

__autoreleasing

  • 输出参数默认是__autoreleasing的,如NSError **(等价于NSError * __autoreleasing *)
  • 如果@autoreleasepool中包含__autoreleasing参数,会导致奔溃


    Snip20180423_5.png

    正确的实现方法为:

- (BOOL)startWithConfigurationURL:(NSURL*)url error:(NSError**)outError {
    NSError *localError = nil;
    BOOL wasSuccessful = YES;
    @autoreleasepool {
        // < get response from url >
        NSDictionary *parsed = [NSJSONSerialization JSONObjectWithData:response
        if (parsed) {
            // < use dictionary >
        } else {
            wasSuccessful = NO;
} }
    if (!wasSuccessful && outError) *outError = localError;
    return wasSuccessful;
}


相关文章

网友评论

      本文标题:内存问题

      本文链接:https://www.haomeiwen.com/subject/yamrlftx.html