LoginSignup
13
13

More than 5 years have passed since last update.

Xcode, AppCodeスニペッド(Live Template)

Last updated at Posted at 2014-03-25

少しずつ追記して行くッス。
所詮はスニペッドなので大した事はありませんが、便利そうなら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;

スはスニペッドのスっす。

13
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13