エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

ctrl+M で enter

これが凄く快適です。

returnを押すとどうしても「ッターン!」の瞬間に思考の空白ができてしまうので。

打鍵音もかなり小さくなって、今日はキーボードを打っているのかどうか分からないくらいにまで抑えられたかな、と思います。

vimやiTermでは標準でこの仕様なのですが、mac全体でもこれでいきたいという事で、KeyRemap4MacBookEmacs Modeというやつで全体的に変えてみました。

f:id:J_ogawa:20140619003756p:plain

あと、ctrl+lでtabもいけるみたいなんですけど、こっちのキーはiTermでは画面のクリーンに対応してるし、ちょっと微妙かもしれないですね。tabはreturnほど遠くないのであまり気にならないですし。

新言語Swift

いや〜熱いですね。

一応ドキュメントは無料で手には入るんですがNDA的な関係で内容をどこまで書いていいのか。

パッと見はObjective-Cとはまるで違いますね。

自分はObjective-Cからプログラミングに入ったのでObjective-C母国語というか、やっぱ読みやすいと思っちゃうんですが慣れなんでしょう。

セミコロンも付けなくていいみたいだし、書くのがとても楽になりそうでテンション上がります。

とりあえずHello Worldしてみました。

iOS 角丸パーツ

かなり既出でしょうが。

UIViewのサブクラスのdrawRectに角丸処理を書く。

storyboardでも置けばそのまま使えるので、速く作るならradiusが違うクラスとか、button用クラスとかを何個か作っても良いかななどと思ったり。

#import "JOGRoundButton.h"

@implementation JOGRoundButton

- (void)drawRect:(CGRect)rect
{
    self.layer.cornerRadius = 5.0;
    self.layer.masksToBounds = YES;
}

@end

f:id:J_ogawa:20140516021146p:plain

f:id:J_ogawa:20140516021830p:plain

更新滞ってる

ちょっと忙しくて更新が・・。

「入門 Webゲーム開発」買った。JavaScriptがまるで分かっていないのでとりあえず動くものを作ってみて流れを感じてみようという事で。 フレームワークの力も感じられそう。

早く写経したい・・・!

入門 Webゲーム開発

入門 Webゲーム開発

iOS NSStringで絵文字を含んでいるかを判定

こちらから、絵文字のNSCharacterSet+EmojisAdditionカテゴリを使わせてもらった。

#import "NSString+isContainAddition.h"

#import "NSCharacterSet+EmojisAddition.h"

@implementation NSString (isContainAddition)

- (BOOL)isContainEmoji
{
    NSCharacterSet *emojiSet = [NSCharacterSet emojiCharacterSet];
    return ([self rangeOfCharacterFromSet:emojiSet].location != NSNotFound) ? YES : NO;
}

- (BOOL)isContainCharacterString:(NSString *)str
{
    NSString *specialCharacterString = str;
    NSCharacterSet *specialCharacterSet = [NSCharacterSet
                                           characterSetWithCharactersInString:specialCharacterString];
    return ([self rangeOfCharacterFromSet:specialCharacterSet].location != NSNotFound) ? YES : NO;
}

@end

おまけとして、isContainCharacterString:という判定したい文字を入れた文字列を渡して含んでいるか見るメソッドも作った。

使用

NSLog(@"ss  abcde : %@", @([@"ss" isContainCharacterString:@"abcde"]));
NSLog(@"ssc abcde : %@", @([@"ssc" isContainCharacterString:@"abcde"]));
NSLog(@"ssC abcde : %@", @([@"ssC" isContainCharacterString:@"abcde"]));
NSLog(@"888  9654 : %@", @([@"888" isContainCharacterString:@"9654"]));
NSLog(@"4    9654 : %@", @([@"4" isContainCharacterString:@"9654"]));

結果

ss  abcde : 0
ssc abcde : 1
ssC abcde : 0
888  9654 : 0
4    9654 : 1

まあ、正規表現を使わなくても良い簡単な判定で使えるかな。

UIPageViewControllerでpage内にセットしたvcのviewが37pt縮む件

何の事は無い、画面下部にpageControllerが表示されていたんですね。

こちらでみてなるほどと。

自分の方ではpageControllerの○の色が見えなくて、ずっと原因が分からず悩んでいました。なんで、中のviewが縮むんだよ、と思って色々試行錯誤し、Transition Styleをscrollからcurlに変えてみたら縮む現象が消えたのでそこから解決に至りました。

しかし、デリゲートメソッドを実装すると出現する(そして中のvcのviewを縮める)とか、そんなの考えに無かったです。ずっと、UIPageViewControllerに何かpropertyがあったりするのかなと持ってその辺で悩んでいました。
デリゲートメソッドを削除したら消えました。

iOS端末の中に入っているprovisioning profileに関してキャッシュ的なことが起こった

アプリのテストなどで一度アプリインストール時にprovisioning profileを端末内に入れると、そのままだと、大元のiOS dev centerでそのprovisioning profileをeditしたりして更新したとしても、古いやつがずっと使われる。

さらに、たとえ大元で新しくprovisioning profileを作って、それで同じアプリを新しくビルドしたとしても、インストール直後に古いprovisioning profileを使ってアプリ起動しようとする。

そしてさらに、(多分)古いprovisioning profileを端末上から消しても、そのまますぐに新しくビルドしたアプリを起動しようとすると古いprovisioning profileが使われる。(多分)

なので、解決法としては古いprovisioning profileを消して、いったん再起動してから、新しいprovisioning profileでビルドされたipaをインストールする。

自分は、ipaを作る際のprovisioning profileが自動的に使われると思い込んでいたので、とてもつまづいた。 起きた現象としては、

端末を登録していないprovisioning profileでアプリを立ち上げようとする
-> アプリが起動しない
-> dev cen でprovisioning profile編集し、端末を追加登録 -> ビルド&インストール
-> 起動しない
-> 違う名前で新しくprovisioning profile作成、ビルド&インストール
-> 起動しない
-> 端末内provisioning profile消去 & インストール
-> 起動しない
-> 端末内provisioning profile消去 & 再起動 & インストール
-> 起動

結論: provisioning profile という言葉が長くて使いづらい

いや〜、思い込みは良くない。
しかし、端末内のやつを消して再起動しなければ古いやつが使われるとは思っていなかった。

何か認識違いなどしてるかもしれないんでその場合つっこんでもらえるとありがたいです。