デリゲートにselfを指定するときにエラー
現象
デリゲートにselfを代入したときにwarningが出る
コード
self.hoge.delegate = self;
エラーメッセージ
Assigning to 'id<HogeDelegate>' from incompatible type 'ViewController'
原因
デリゲート先のクラスで<HogeDelegate>
のプロトコルを採用していなかった
@interface ViewController () // ここに <HogeDelegate> が不足している @property (nonatomic, strong) Hoge* hoge; @end
詳細
デリゲートを使用する際には、デリゲート先(実際に処理を実装する方)で</*デリゲート名*/>
の形式で、使用するデリゲートを指定し、「このデリゲートを使いますよ〜」ということを表す必要がある。
そうすることで、デリゲート先でデリゲート元のプロトコルが準拠され、self
がHogeDelegate
型として利用できるようになり、デリゲート元のメソッドを実装して使用することができる。
(というふうに解釈したのだけれど、果たしてこれはあってるのかしら)
今回は、プロトコルの準拠を明示することを怠っていたため、self
はViewController
型でしかなく、HogeDelegate
型のdelegate
とは型が一致せず、warningが出た。
解決策
@interface ViewController () <HogeDelegate> @property (nonatomic, strong) Hoge* hoge; @end
参考
複数の変数に同じ値を代入する(同時代入)
背景
複数の値に同時に代入したいことがたまにある。
(その行為が妥当かどうなのかは置いておいて)
普通に
a = 0; b = 0;
とすればよいのだけれど、 どうせならもっとスマートな書き方を知っておこうということで調べてみた結果をまとめる。
結論
a = b = 0;
どの言語もだいたい上記のような書き方で宣言できる。
「代入」はそもそも「式」なので、一文で記入した場合、右から評価される。 それゆえ、このような書き方ですべての変数に代入することが可能となる。
言語ごとの違い
C / C++ / C# / Objective-C
int a,b; a = b = 0;
int a = 0, b = 0;
※ 以下のようにすると、bにのみ0が代入される
int a, b = 0;
JavaScript
var a = b = 0;
※ 上記の場合、aはローカル変数、bはグローバル変数となる
PHP
<? php $a = $b = 0;
Python
// マルチターゲット代入 a = b = 0; // アンパック代入 a, b = 0, 0; a, b = 1, 2; // ※
※アンパック代入では一括で違う値も代入可能(さすが)
VBA
無理
他にもわかったら追記します
数独にはまった
毎日、通勤の電車内と、昼休みまでも、ずっと数独ばかりやっている。 昼休み、今までブランケットと枕を持ち込んで会社で堂々と昼寝をしていたのに、その私が、最近は起きて数独をやっている。
思えば私は熱しやすく冷めやすい性質がある。 数独も、今までの人生で何度かはまって熱中していた時期があったが、そういえば今思えばいつの間にかやらなくなっていた。 他にも、スパイダーソリティア、マインスイーパもすごくはまっていた時期があった。
おそらく今回の数独ブームもあっという間に過ぎ去るだろう。 それはそれで、たかが一つの暇つぶしゲームに対する小さなブームだから、問題ない。
ただ、この熱しやすく冷めやすい性格、それ自体は見直さなければならないと思う。 一度冷めてしまうとしばらく冷めっぱなしなことも多々あるため、このままだと、物事も深くは追求できない私の悪い部分がなかなか直らない。 それに何より、人付き合いにおいても、熱されて近づき、冷めて離れてしまうようだと、良い付き合いにはならない。 思い当たる節がたくさんある。
気をつけなければ。 と、数独一つとって、深く反省した。
しかし、すぐ冷めてしまう性格はどうしたら直せるのかなぁ…
黒ごまとかるがも
タイトルには全く意味がありません。 KUROGOMAとKARUGAMOって子音が一緒だな、と思って(KRGM)。
このご時世に、この中途半端な時期に、ブログを始めてみることにしました。 1月1日にも同じことを考え、しかしどうせ3日坊主になるだろうしやめよう、と結論づけたばかりなのですが…
始めるも自由、辞めるも自由ということで、(炎上しない程度に(炎上するネタもない))自由にやってみようと思います。
思ったことを人に伝えること、そもそも物事についての考えをめぐらすことが苦手なので、 すこしでも練習になれば、始めた意味もあるのかな、と思います。
とりあえずは、思ったこと、感じたこと、学んだこと、やったこと、雑多に記録してみます。