2016-01-01から1年間の記事一覧

NSPredicate で検索句を作る

バードウオッチングをして、フィールドノートを記録するためのアプリを作成中です。日本で観察できる野鳥名のマスタは日本野鳥の会から取ってこれたので Core Data に入れました。頭一文字を入力したら、候補の野鳥名が一覧で出てくるようにするにはどうする…

AppDelegate を他のクラスで使う

AppDelegate とは何だろう。delegate とどう違うのか。 私も未だ明快にわかっていないのですが、AppDelegate は、Application 全体を通じて共有するようなオブジェクトを定義しておいて、必要に応じて参照・更新するような使い方をするようです。言ってみれ…

愛宕吾国ハイキング縦走コース

今年はトレイルの大会に出なかったので、年末の三連休に自主練することにしました。茨城方面の山でどこか良いところはないかと探してみたところ、3つほど候補があり、筑波連山縦走も考えたのですが総距離 37 Km と、あまりにも長く、自信がないので、愛宕山…

SKScene で、view が取り除かれる時に呼ばれるメソッドは・・・

SKScene で、View が表示される時に呼ばれるメソッドは、 -(void)didMoveToView:(SKView *)view ですが、その view が取り除かれる時に呼ばれるのはなんでしょう。 取り除かれるというのがよくわかんない表現になっていますが、結局のところ、別の view を表…

force touch

MacBook 12 inch ですごいと思うのが force touch。トラックパッドを押すと、感覚的にはどう考えても押している反応があるのに、装置が作り出した擬似感覚。電源 off で、トラックパッドを押しても全然押した気がしません。これはすごい。 これ、何がいいこ…

Mac Book 12 inch

MacBook 12 inch を使っています。 これで Xcode を使って開発までしているので、酷使している感がすごいなと。。 インターフェースが usb-c だけとか、キーボードが打ちにくいなど前評判が悪い意味ですごかったのですが、実際使ってみるとほとんど不満があ…

CAShapeLayer で描写した図形を消すには?

CAShapeLayer で描写した図形を消そうと、 CAShapeLayer* circleLayer; /* 描写する部分、省略 */ [circleLayer removeFromSuperlayer]; とすると、消えない。 なんで?と思って調べたら、 [circleLayer removeFromSuperlayer]; circleLayer = nil; とすると…

SKShapeNode で線の先端を丸くするには・・・

SKShapeNode で線を引くと、デフォルトで先端は角ばっています。 今作っているゲームでは、これがちょっと具合が悪いというか、先端を丸くしたいと思い調べて見たところ、こんなプロパティが・・・ some_SKShapeNode.lineCap 指定できる値は 3 種。 kCALineC…

iOS 10、株価(アプリ)でちょっとした変化。

iOS

iOS 10 になってから(だと思う)、株価(アプリ)にちょっとした変化があった。 個別銘柄の株価と対比する目的でインデックスを表示したく、日経 225 を表示していました。検索で「225」とすると見つかりますので、それを表示するようにします。 株価では、…

UIView の座標系と SpriteKit の座標系を変換する

SpriteKit の scene の座標系は、原点 (0, 0) が左下です。UIView の座標系は Mac でおなじみの右上になります。なぜこのような違いが出るのかというと、これは想像ですが、SpriteKit は重力の概念があり、0 は ground の方が都合がよく、計算のコストを低く…

デスクトップの順番を固定する:macOS Sierra

Mavericks あたりからだったか、仮想デスクトップ(最近この言い方しないね。なんでだろ)を使えるようになって、デスクトップを複数持てて便利。仮想デスクトップは、Linux で AfterStep を使っていた頃から重宝していて、MacOS でデスクトップをクリックし…

KVO の勘所

アプリを作っていると、「ある値が変化したら・・・」ということをしたくなるもので、KVO と呼ばれる仕組みが Objective-C に用意されています。 「あるクラスの値が変化したら知らせてね」ということを登録できます。便利なんですが、覚えておかないといけ…

SpriteKit: すべての子ノードを削除する

SpriteKit で、画面上にスワイプでスクロールさせたかったのですが、解説読んでもさっぱり分かりません。自作されている方もいるようで、幾つかソースも見たのですが、それでもさっぱり分かりません。仕方ないので、左右にスワイプしてページを切り替えるこ…

ポケモンGo、部屋にいながらにして歩く?

ポケモンGo(iPhone)で一人歩きできてしまう裏技です。 1. アプリ起動 2, コントロールセンターを表示 3. コントロールセンターをすぐ閉じる 2, 3 を繰り返すと勝手にキャラクターが歩きます。 結構遠くまで歩きますが、無限に遠くに行くわけではありません…

自作 class の sub class

自作 class の sub class なので、何か性能が悪くなってしまったか?と勘違いしていましたが、循環参照問題によるものと判明し解決できたので、sub class で色々実験。 まず、super class で定義済みの @property は sub class で再度定義する必要なし。当た…

cannot find declaration for class A superclass of class B.

ゲーム作成中です。 SpriteKit 使ってます。 ゲームシーンは SKScene で起こしています。 あるシーンを SKScene の sub class として作りました。class A とします。 次に、class A の sub class を起こしました。class B とします。 build するとエラーにな…

KADI Port 到着

MacBook 12 inch を入手したのが去年の 5 月。外部ポートが 1 つしかなくて、どうかなこれと思案しましたが、ついに 5 年目に突入してしまった MacBook Air 11 inch の冷却ファンがイカれ気味で異音がひどく、いつ壊れるかヒヤヒヤで、おっかなびっくり使う…

Objective-C は古くさい?

Swift 全盛の今日この頃、Objective-C でプログラム組むのはいかなる理由によるものか?という命題があります。 当方、Swift には今のところあまり関心がない(もとい、学習する意欲がない)のですが、それは何でか自己分析しました。 まず、Objective-C を…

クラスメソッドとは何か。

Objective-C のメソッドを大別するとクラスメソッドとインスタンスメソッドの 2 種類あり、その区別は定義するときに、頭に+ が付いていればクラスメソッド、- が付いていればインスタンスメソッドになります。 ところで、通常プログラムを書くときはインス…

CoreData で Entity を subclass 化すると 4 ファイル作成されるようになった

CoreData で Entity を新設したらファイル一覧で右クリック、New File... します。 その後、テンプレート選択画面になるので、Core Data、NSManagedObject subclass を選択し Next ボタンを押します。 すると、新設した Entity を元にして、.m, .h ファイル…

CoreData でいきなりエラーの対処方法

CoreData アプリを作ろうと、Master-Detail テンプレートで use coredata する。 テンプレートの通り、変更なしで build すると問題なし。 次に、CoreData の entity を追加して build するとエラー・・・ たったこれだけでエラー・・・ 敷居高いね・・・(…

delegate とは何か(5)

具体的に delegate を使うように記述します。 STtouchPointCircle は、丸の class です。 STtouchPointCircle.h #import <UIKit/UIKit.h> @class STtouchPointCircle; @protocol STTouchPointCircleDelegate - (void) beginImageTouched:(NSSet *)touches withEvent:(UIEven</uikit/uikit.h>…

delegate とは何か(4)

ところで、丸をタッチしたら・・・という記述をしたいので、UIViewController.m の touchesBegan に記載を行いましたが、よく考えてみると、丸に関する記述なので、丸の class に記述を行うのが正しい姿なのではないだろうかと思いませんか。 オブジェクト指…

delegate とは何か(3)

ViewController.m だけで記述できるけれども delegate を使ったほうがよいと書きました。 それはなぜでしょう。 理解を促進するために、ViewController.m に記述するとどうなるか試してみます。 - (void) touchesBegan:(NSSet*) touches withEvent:(UIEvent*…

delegate とは何か(2)

delegate は必要性があっての概念なのですが、その必要性が分かっていないとなかなか理解が進みません。 必要性を理解するために、具体的な事例をもとにして整理してみたいと思います。 次のようなアプリを考えます: ・ユーザは画面上の丸を頻繁に動かしま…

delegate とは何か(1)

オブジェクト指向プログラミングのテクニックで delegate と呼ばれるデザインパターンがあります。 iOS のアプリを作るときには頻繁に利用することになるのですが、最近ようやく意味が分かってきた、というより、初めからこれを分かっていないと iOS のプロ…

App Store のレビューに要する期間がずいぶん短くなった。

先日、BezierCurveAnimation II を無事リリースししました。 Bezier Curve Animation II Satoshi TANAKA Productivity Free AppStore に上市するには Apple の Review があり、その後リリースとなります。 去年ぐらいは review の期間が 1 週間ぐらいかかっ…

パスの合成

UIBezierPath などで path を複数作って、それを合成する方法がわからなかったのだが、調べてみたところ、appendPath メソッドが用意されていることが判明。 例えば次のような感じで path を合成できます。 NSMutableArray* aBeziers = [NSMutableArray arra…

アシックス、ライトレーサー

スカイセンサーを履きつぶしてしまったのでターサーにしようかなと思ったけれど、消しゴムのように減っていく靴底に多分耐えられないだろうと、ライトレーサーを購入。 耐久性を考えて TS に。 ライトレーサーは以前も履いていたのだけれど、耐久性は目を見…

UIView で表示順序を変える

UIView で色々object を配置していくとどんどん上に積み重なっていく。 順番を変えたい時にどうするか。 調べたところ、addSubview した後、sendSubviewToBack すればよい。 この method では後ろに配置することができる。 code の例は次の通り。 [self.canv…