Skip to content

Instantly share code, notes, and snippets.

import UIKit
protocol UIViewControllerProtocol {
// hogehoge...
}
extension UIViewController: UIViewControllerProtocol {
}
var viewController: protocol<UIViewControllerProtocol, UITableViewDelegate>! = nil
extension Dictionary {
func map<K, V>(f: (Key, Value) -> (K, V)) -> [K: V] {
var r = Dictionary<K, V>(minimumCapacity: self.count)
for key in self.keys {
let (k, d) = f(key, self[key]!)
r[k] = d
}
return r
}
}
// 鳥とバランス棒のシノニムを定義
typealias Birds = Int
typealias Pole = (left: Birds, right: Birds)
// 左右に鳥が飛んできたことを表現
func landLeft(n: Birds) -> Pole -> Pole {
return {p in (p.left + n, p.right)};
}
func landRight(n: Birds) -> Pole -> Pole {
@akuraru
akuraru / NSObject+performSelector.m
Last active August 29, 2015 14:08
SwiftでperformSelectorを使うための何か
#import "NSObject+performSelector.h"
@implementation NSObject (performSelector)
- (void)call:(NSString *)sel {
[self performSelector:@selector(sel)];
}
- (id)get:(NSString *)sel {
return [self performSelector:@selector(sel)];
@implementation HideTabBar
+ (void)tabBarHidden:(BOOL)hide tabBar:(UITabBarController *)tabBarController {
CGFloat viewHeight = [self viewHeight:hide];
for (UIView *view in tabBarController.view.subviews) {
CGRect _rect = view.frame;
if ([view isKindOfClass:[UITabBar class]]) {
_rect.origin.y = viewHeight;
} else {
@akuraru
akuraru / gist:11201920
Created April 23, 2014 03:27
ぶどう問題。最後の方は明らかに力尽きている
require 'set'
class Bunch
def initialize(bunch1, bunch2 = nil)
(bunch2 != nil) ? mergeBunch(bunch1, bunch2) : initValue(bunch1)
end
def initValue(value)
@bunch1 = nil
@bunch2 = nil
@value = value
@akuraru
akuraru / gist:10706319
Created April 15, 2014 06:10
よくあるシングルトン
+ (instancetype)sharedManager {
static id manager_ = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
manager_ = [[self alloc] init];
});
return manager_;
}
@akuraru
akuraru / gist:9406640
Created March 7, 2014 07:01
Objective-Cで翌日の9時を取得する
// pod 'NSDate-Escort'
// pod 'AZDateBuilder'
#import "NSDate+Escort.h"
#import "NSDate+AZDateBuilder.h"
NSDate *date = [[[NSDate date] dateByAddingDays:1] AZ_dateByUnit: @{
AZ_DateUnit.hour : @9,
AZ_DateUnit.minute : @0,
AZ_DateUnit.second : @0,
@akuraru
akuraru / gist:7783786
Created December 4, 2013 07:54
いつの間にかこれでも良くなった
@implementation HogeViewController {
__weak IBOutlet UIView *piyo;
}
@end
@akuraru
akuraru / gist:7765683
Created December 3, 2013 08:10
segueのidをいちいち比較するのが面倒なので、最近はこんな感じで書いてたりする。senderがBlocks以外だったらどうするか?知りませんよそんなの
- (IBAction)touchMove:(id)sender {
__weak typeof (self) this = self;
[self performSegueWithIdentifier:kSeguePicture sender:^(id controller) {
[controller setViewObject:this.viewObject];
}];
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(void (^)(id))sender {
if (sender) {