This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Context不保存,NSManagedObject都不释放 | |
NSManagedObject没有循环引用,只要Context保存,就释放 | |
NSManagedObject存在循环引用,必须Context reset,才会释放 | |
可以写个test case |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// main.swift | |
// CheckBRD | |
// | |
// Created by Yanni Wang on 11/10/19. | |
// Copyright © 2019 Yanni. All rights reserved. | |
// | |
import Foundation |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import <XCTest/XCTest.h> | |
@interface ThreadNotSafetyTests : XCTestCase | |
// no crash | |
//@property (atomic) NSObject *obj; | |
// crash | |
@property (nonatomic) NSObject *obj; | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Foundation | |
// Double | |
func + (leftAddend: Double, rightAddend: Double) -> Double { | |
fatalError() | |
} | |
func - (leftAddend: Double, rightAddend: Double) -> Double { | |
fatalError() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@interface MyObject : NSObject | |
@property NSString *name; | |
@end | |
@implementation MyObject | |
-(void)dealloc | |
{ | |
NSLog(@"dealloc"); | |
} | |
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int i = 0; | |
while (YES) { | |
@autoreleasepool { | |
NSString *string = [[NSString alloc] initWithFormat:@"%d", i]; | |
// or | |
// NSString *string = [[NSString alloc] init]; | |
[[string rac_willDeallocSignal] subscribeCompleted:^{ | |
NSLog(@"obj dealloc"); | |
}]; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (id)weakObject { | |
id (^block)() = objc_getAssociatedObject(self, @selector(weakObject)); | |
return (block ? block() : nil); | |
} | |
- (void)setWeakObject:(id)object { | |
id __weak weakObject = object; | |
id (^block)() = ^{ return weakObject; }; | |
objc_setAssociatedObject(self, @selector(weakObject), | |
block, OBJC_ASSOCIATION_COPY); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<title>Safari Memory Hole</title> | |
</head> | |
<body> | |
<textarea>This file takes 30MB in Chrome but 2GB in Safari</textarea> | |
<script> | |
var m = {}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# iOS 10 or above | |
1. **Cold start** | |
1. normal notification | |
userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: | |
2. silent notification | |
userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: | |
2. **Hot start** | |
1. normal notification | |
userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define UIImageWithName(IMAGE_NAME)\ | |
(^UIImage *(NSString *imageName){\ | |
NSAssert(imageName.length != 0, @"imageName is empty");\ | |
if (imageName.length == 0) {\ | |
return nil;\ | |
}\ | |
NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle bundleForClass:NSClassFromString(@"SHPUIModule")] pathForResource:@"SHPUIKit" ofType:@"bundle"]];\ | |
NSAssert(bundle != nil, @"bundle is nil");\ | |
if (bundle == nil) {\ | |
return nil;\ |