CRのみ(Macintosh)のJSファイルでChromeのデバッガを使おうとしたら、ブレイクポイントで止まらない現象が起きた。
CR+LF(Windows)またはLFのみ(UNIX)に変更したらデバッガでブレイクポイントの箇所で止めることができるようになった。
なんだこの動作は?Windowsだからだめだったのかな?
copy属性付のNSMutableArray型プロパティではセッターをオーバーライドしないといけないらしい
iOS用アプリの勉強中にこのチュートリアルを読んでいたんですけど
こんな感じでNSMutableArray型のプロパティを定義した場合、
@property (nonatomic, copy) NSMutableArray *masterBirdSightingList;
セッターメソッドであるsetMasterBirdSightingListをオーバーライドして
- (void)setMasterBirdSightingList:(NSMutableArray *)newList { if (_masterBirdSightingList != newList) { _masterBirdSightingList = [newList mutableCopy]; } }
mutableCopyを使うようにしなさい、と書いてあった。なんでかいな?と思ったんだけど、NSMutableArrayのcopyメソッドはNSMutableArrayではなくNSArrayを返すようです。それってコピーじゃないじゃん?という気もしますが、仕様なのでしょうがないですね。でミュータブルな配列であるNSMutableArrayでコピーを生成したい場合はmutableCopyを使えってことなんですね。
一つ勉強になりました。
Closure Linterの80文字制限ルールを無効化する
Closure Linterのチェックを通るようなコードを維持しているとJavaScriptコードの品質を上げることができます。JSDocの記述について厳しくチェックしてくれるのでClosure Compilerとの相性もばっちりです。
しかし、Closure Linterはなぜかコードの一行が最大80文字になるルールを解除することができません。ネームスペース+クラス名+prototype+メソッド名で80文字超えちゃうこともよくあるため途方に暮れることがよくあります。何で80文字という制限をClosure Linterの中にハードコーディングしちゃったんですかね…。
下記の記事によると80文字ルールを無視するようなClosure Linterのラッパーを作れば良いらしいです。
というわけでWindows環境上でのClosure Linterの80文字制限ルールを無視するラッパーをつくてみます。
続きを読むブラウザの拡大縮小機能がうまく動作しないサイト用のブックマークレット
ChromeとかでCtrl+マウスホイールで文字の大きさを変えられますが、一部サイトではこの機能がうまく機能しません。原因は、cssで-webkit-text-size-adjustが設定されていることらしいです。
で、私の場合は、こんなブックマークレットを使って回避していました。
javascript:styles='* { -webkit-text-size-adjust: auto; } body {-webkit-text-size-adjust: auto; }'; newSS = document.createElement('link'); newSS.rel = 'stylesheet'; newSS.href = 'data:text/css,' + escape(styles); document.documentElement.getElementsByTagName('head')[0].appendChild(newSS); void 0