少しずつ追記して行くッス。
所詮はスニペッドなので大した事はありませんが、便利そうならIDEに装備してやってくださいッス。
Objective-C編
まずはシングルトンクラス用ッス。
(shared instance)
shain
+ (instancetype)sharedInstance {
static id sharedInstance;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [self new];
});
return sharedInstance;
}
可変引数をNSArrayに変換するッス。
(variable length variables)
vlvs
va_list argp;
NSMutableArray* array = [NSMutableArray array];
id value = $VL_PARAMETER$;
for (va_start(argp, value); value != nil; value = va_arg(argp, id)) [array addObject:value];
va_end(argo);
次はNSValueのカテゴリクラスにメソッドを作る時のスニペッドッス。
構造体とNSValueを変換すればいろいろ便利ッス。(NSArrayに格納するときとか)
(structure - NSValue)
strcval
+ (NSValue*)valueWith$STRUCT_TYPE$:($COPY_STRUCT_TYPE$)$STRUCT_VAR_NAME$ {
return [NSValue value:&$COPY_STRUCT_VAR_NAME$ withObjCType:@encode($COPY_STRUCT_TYPE$)];
}
- ($COPY_STRUCT_TYPE$)$COPY_STRUCT_TYPE$Value {
$COPY_STRUCT_TYPE$ $COPY_STRUCT_VAR_NAME$;
[self getValue:&$COPY_STRUCT_VAR_NAME$];
return $COPY_STRUCT_VAR_NAME$;
}
一度だけ実行したいコードは
once
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
$END$
});
非同期処理して最後にUIに反映する時とかは
async
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// On another thread
$END$
dispatch_sync(dispatch_get_main_queue(), ^{
// On main thread
});
});
Javascript編
書き方の好き嫌いやブラウザのバージョン互換がどうとか議論が多そうなところですが、JSに首突っ込んで2日目の俺のスニペッドっス。
まずはオブジェクト指向でJSを扱う際のクラス定義周りッス。(厳密にはJSにはクラスないッスね・・。概念上クラスって連呼するからスマンッス。)
cls
$CLASS_NAME$ = function ($ARG$) {
var self = this;
self.$COPY_ARG$ = $COPY_ARG$;
}
$COPY_CLASS_NAME$.prototype = {
$CLASS_METHOD$: function () {
var self = this;
$END$
}
}
次はサブクラスッス。
そうそう、ココが最も人それぞれでミンナチガッテミンナイイ的な部分だけど基本的に俺はオブジェクト指向型言語に囲まれてぬくぬくと育ったので「厳密に書く事で冗長になったりするけどセーフティなコード」とかよりもJSがクラスベースのオブジェクト指向型言語でないことを忘れてオブジェクティブな日常を送りたいので次のスニペッドが俺のジャスティス!
subcls
$CLASS_NAME$ = function ($ARG$) {
$SUPER_CLASS_NAME$.call(this, $COPY_ARG$);
var self = this;
self.$COPY_ARG$ = $COPY_ARG$;
}
$COPY_CLASS_NAME$.prototype = {
$CLASS_METHOD$: function () {
var self = this;
$END$
}
}
$COPY_CLASS_NAME$.prototype.__proto__ = $COPY_SUPER_CLASS_NAME$.prototype;
スはスニペッドのスっす。