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;\ |
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
#define MACRO_SINGLETON_H \ | |
+ (instancetype)sharedInstance;\ | |
- (instancetype)init NS_UNAVAILABLE;\ | |
+ (instancetype)new NS_UNAVAILABLE;\ | |
+ (instancetype)allocWithZone:(struct _NSZone *)zone NS_UNAVAILABLE;\ | |
- (id)copy NS_UNAVAILABLE;\ | |
- (id)mutableCopy NS_UNAVAILABLE;\ | |
+ (id)copyWithZone:(struct _NSZone *)zone NS_UNAVAILABLE;\ | |
+ (id)mutableCopyWithZone:(struct _NSZone *)zone NS_UNAVAILABLE;\ |
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
# 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
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
// | |
// 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
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
import UIKit | |
class ViewController: UIViewController { | |
struct OneStruct { | |
} | |
class OneClass { | |
} |
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
static CGFloat MDCFabs(CGFloat value) { | |
#if CGFLOAT_IS_DOUBLE | |
return fabs(value); | |
#else | |
return fabsf(value); | |
#endif | |
} | |
static BOOL MDCCGFloatEqual(CGFloat a, CGFloat b) { | |
const CGFloat constantK = 3; |
OlderNewer