Skip to content

Instantly share code, notes, and snippets.

View 623637646's full-sized avatar
🎯
Focusing

Yanni Wang 王氩 623637646

🎯
Focusing
View GitHub Profile
@623637646
623637646 / UIImageWithName
Last active November 28, 2018 08:32
Get UIImage by name in framework
#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;\
@623637646
623637646 / safari_memory_hole.html
Created March 14, 2019 08:53
Safari memory hole
<html>
<head>
<title>Safari Memory Hole</title>
</head>
<body>
<textarea>This file takes 30MB in Chrome but 2GB in Safari</textarea>
<script>
var m = {};
@623637646
623637646 / Singleton.h
Last active April 11, 2019 03:48
iOS Objective-C Singleton with Macro!!!
#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;\
@623637646
623637646 / Associated.m
Last active April 24, 2019 02:54
Objective C weak associated
- (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);
@623637646
623637646 / iOS push notification logic.txt
Last active April 24, 2019 02:54
iOS push notification logic
# 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:
@623637646
623637646 / DoubleFloat+Deprecated.swift
Created September 5, 2019 08:28
Discard + - * / for Double and Float
import Foundation
// Double
func + (leftAddend: Double, rightAddend: Double) -> Double {
fatalError()
}
func - (leftAddend: Double, rightAddend: Double) -> Double {
fatalError()
}
@623637646
623637646 / verifyBRD.swift
Created October 11, 2019 08:39
Verify BRD's files.
//
// main.swift
// CheckBRD
//
// Created by Yanni Wang on 11/10/19.
// Copyright © 2019 Yanni. All rights reserved.
//
import Foundation
@623637646
623637646 / CoreData.txt
Last active November 4, 2019 08:14
CoreData Object release 行为
Context不保存,NSManagedObject都不释放
NSManagedObject没有循环引用,只要Context保存,就释放
NSManagedObject存在循环引用,必须Context reset,才会释放
可以写个test case
@623637646
623637646 / AutoreleasingUnsafeMutablePointer.swift
Last active November 21, 2019 08:24
A bug of AutoreleasingUnsafeMutablePointer compiling
import UIKit
class ViewController: UIViewController {
struct OneStruct {
}
class OneClass {
}
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;