swiftでRGBを計算したら困った話

感の良い方なら私が何を困ったか想像がつくかもしれません。 それほど基本的な事ですが、情けない事に小一時間ほどつぶしました。

やりたかった事は一番単純なグレースケール、RGBの平均をとりたかっただけです。 コードでいうと、小学生の問題。

(red + green + blue) / 3

これが、 EXC_BREAKPOINT (code=1, ... などというメッセージと共に止まってしまう。 f:id:nof:20150306215148p:plain

ブレークポイントは入れていないのに、EXC_BREAKPOINTといって止まります。 最初は、何かxcodeが覚えているブレークポイントの位置がおかしくなったのかと思い、プロジェクトをクリアしたり再起動したりしてみましたが、状況は変わらず。

謎だなぁと思いながらコーヒーを淹れて戻り、一行づつ消して試していたら、、 f:id:nof:20150306215204p:plain

UInt8か、なるほど。255を超えたから止まっていたようです。 止まるのは良いんです。でも、もうちょっとわかりやすいメッセージが嬉しいなぁと思います。xcodeさん。

普段、こういったC言語と近いところの言語を使っていないこともあり、8ビット整数が原因だなんて思いもよりませんでした。

せっかくなのでPlaygroundでも試してみました。 f:id:nof:20150306215211p:plain

EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, ... どうやら、何かがおかしいという事を知るくらいにしかメッセージは得られないようです。