Skip to content

iOS造成内存泄漏的情况 #70

Open

Description

@resse92

循环引用

循环引用的情况比较多:

  1. block循环引用self.block = ^(){self.view.backgroundColor = [UIColor red];};
  2. 代理不使用weak
  3. NSTimer使用不当,如:在一个类的dealloc里面释放一个timer,而类对timer强引用。类的释放前提是timer停止并置nil,而此时你在类的- (void)dealloc;里面置空一个timer,自然双方都释放不了。

非OC对象没有及时释放

如CoreFoundation下的大部分对象,需要在使用完释放。

其他

在一个很大次数的循环中:

for (int i = 0; i < 100000; i++) {

            NSString *string = @"Abc";

            string = [string lowercaseString];

            string = [string stringByAppendingString:@"xyz"];

            NSLog(@"%@", string);
    }

将会大量创建对象,直到循环的结束才会释放,需要在for循环里面主动加一个@autoreleasepool,使得临时变量及时释放。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions