Objective-C

UITableView で custom cell

またはまった。UITableView で custom cell をしようとした話。 detail に tableView を配置して、内容は custom cell ってのはうまくいっているんだけど、テンプレートになる Master の cell を custom cell にするのがうまくいかなくて。こっちの方がネッ…

カメラの使用を許可の設定が有効になるタイミングは・・・

うーん、またハマってしまった・・・ カメラの機能を使って QR を読み込もうとしてて、利用者に許可取らないとならないんだよね、info.plit に、以下の propety を追加: Privecy - Camera Usage Description そうすると、設定、プライバシー、カメラを選ぶ…

property と global 変数の使い分け

scope の範囲を広げたいので、global 変数にするか、あるいは property として定義するか、どっちがいいのか。効能はどちらも変わらないのでどうするか。 自分としての結論は、その class の変数にしたいなら property で、class 内でしか通用しなくていいな…

CoreData: detal に tableView を表示する方法

いつもながらハマったね。CoreData で 1 対 N をやろうとするといつもハマるので、この手のプログラムを書くときはかなり萎える。あらかじめよい点も記載しておくと、以前は CoreData で管理する table とか field を変更すると、その都度、header ファイル…

UIImageView に画像がセットされていなかったら・・・の判定

UIImageView にカメラロールから選んだ画像をセットし、ボタンが押されたら色分解する。画像がセットされていなかったら、何もしない。 UIimageView に画像がセットされているかどうか判定するにはどうするか。正解は次の通り。 if ( _cookingImage.image ==…

QR コードをスキャンする、認識できた QR コードを四角で囲む、のハマりどころ

ハマった〜 QR コードをスキャンするプログラムを作成していて、読み込むところまでは簡単・簡単、前作ったことあったのでコピペ、終了!と思ったら、読み込んだn QR コードを四角で囲むようにしたくなって、そこがうまくいかない。 二日間ぐらいハマって、…

removeFromSuperview: は該当する view が表示されていなくても大丈夫

button を押したら view を表示し、用が済んだら view を消す。 [self.view removeFromSuperview:hoge]; こんな感じで使うのですが、今回困ったのが、該当する view が表示されているのか表示されていないのかよくわからない状況で、removeFromSuperview し…

Xcode 10:結構変わったのね・・・

Xcode 10 で変わった点。Storyboard に object を配置しようとしたら、ライブラリのテンプレ?アイコン?がない。いろいろいじってたら、Show Library をメニューから選ぶと良いことがわかった。って、これ結構使うから初めから表示しておいてくれよ、ショー…

Loop will run at most once (loop increment never executed)

今年初の記事だったことに気付いた。 for ( int i = 0; i < imageHeight; i++ ) { for ( int j = 0; j < imageWidth; j++ ) { こんな感じで for 文書いていたら、j++ のところで次のような警告: Loop will run at most once (loop increment never executed…

imageOrientation が喪失する件・・・

これ bug だと思うんだけんどなぁ・・・ UIImageView なんかで画像を扱ってて、CGImageRef を生成する。具体的には次のような感じ・・・ CGImageRef imageRef = temp.image.CGImage; すると、imageRef では imageOrientation が考慮されていない。ので、画像…

CAShapeLayer にアニメーションを追加

CAShapeLayer にアニメーションを追加するにはどうするのか。 いろいろ調べたところ、CATransaction を使えばいいのかなと、いろいろ試してみたけれどもアニメしてくれない。 別の方法で、CABasicAnimation を使う方法があり、こちらを試してみたら半分うま…

touch した object を判別するには・・・

object をタッチして移動するには、まず、object に対して .userinteraction = YES のプロパティを設定する。その後、touchMoved などの method を実装してくことになるのだけれど、touch した object によって動作を分けたい時、touch した object を判別し…

@selector() で指定する method で、引数がある場合

selector 内で method を指定する時、引数として何か渡したい時はどうするか。引数が 1 つしかないなら、“:”を書くだけで OK。次のような感じ・・・ UITapGestureRecognizer* singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@sele…

UIImageView の画像をピンチで拡大するには・・・

UIImageView に画像に photo library から画像を選択表示し、その画像をピンチで拡大するにはどうするか。調べてみたらできた。次のような感じ。 storyboard に UIScrollView を配置 UIScrollView の上に UIImageView を配置 UIScrollViewDelegate プロトコ…

size_t ってなんだ?

写真とか画像の横幅や高さを調べたいなと思って、photo library から画像を選んで UIImageView に表示させて、後は懇ろに・・・と目論んだところで画像の大きさを取得しないと都合が悪いことに気づいて、さて、画像のサイズはどう取るのだ?答えはこうだ。 C…

MacBook 12 inch:電池の減りが早いのは com.apple.CoreSimulator.CoreSimulatorService のせい?

MacBook 12 inch を使っていて、なんか電池の減りが早くて嫌なんですが、プロセスの状況を watch していたら、com.apple.CoreSimulator.CoreSimulatorService ってのが上がったり下がったりで、あー、これ Xcode から simulator 立ち上げると顔を出すんだよ…

自作 class

アプリを作っていて、自作の class を組もうとするときの話。class の設計はなんとなく RDB の設計に似ていると感じます。でも、事象の捉え方による、設計者ごとの違いというのが微妙にあるように思いました。 一見すると negative に思えますが、設計思想に…

SKShapeNode の position

SKShapeNode を扱っており、どうも勝手がよろしくないなと思ってたらようやくわかった。 まず、anchor point は物体の中心であること。左下端とか勝手に思い込んでいたので、気づくのに時間がかかってしまった・・・ 次に、position の基準点は screen の中…

Xcode 10.0:結構変わった

iOS 12 がリリースされたので、Xcode もバージョンアップしないと iOS 12 のアプリが作れないので、必然的にバージョンアップされる。早速ダウンロードしてインストール。 アプリがちゃんと動くことを確認し、さて、何が変わったのかと色々試してみる。edito…

メモリーリーク:Xcode と Instruments:その2

カメラを使うアプリを作っていて、メモリリークでアプリが落ちる、それを調べるのに Instruments が有効だと書きました。でも、Instruments で検出できない leak もあり、memory をモニタリングしつつ使われている method を掌握しつつ、根本的な問題解決へ…

メモリーリーク:Xcode と Instruments

アプリを作っているのですが、 カメラに写った画像を加工してどーのこーの というのをやろうとしてて、アプリを起動し、しばらくすると落ちる。原因は、起動しているとメモリを食い過ぎてしまい落ちているようだ。メモリリーク・・・水道管の水漏れにちなん…

SpriteKit の touch event と座標変換

SpriteKit の Scene では縦方向の原点が下で、UIView では上になるという違いがある。なんでそんなことすんの?という疑問なんですが、SpriteKit はゲームで利用することが多く、重力を計算するとき原点が下にあった方が理解しやすいからなんだろうなと勝手…

CGRect を配列の要素にするには・・・

どうも CGRect には泣かされる。CGRect を配列の要素にしようと思い [mutableRects addObject:textObservation.boundingBox]; とすると以下のエラー Sending 'CGRect' (aka 'struct CGRect') to parameter of incompatible type 'id _Nonnull’ 仕方がないの…

SKShapeNode のアンカーポイントは?

SKShapeNode の アンカーポイントを変更したく、property で設定しようとしたら property が無い・・・ 調べてみたら、SkShapeNode のアンカーポイントは自動的に中心になるようで、property 自体が存在しないと。 うーん、addChild した object の配置位置…

CGRect を for 文で・・・

配列の中身が CGRect で、for 文の中で要素を取り出す際の話。 for ( CGRect rect in arrayHoge )このようにすると、次のエラーになる。Used type 'CGRect' (aka 'struct CGRect') where arithmetic or pointer type is required しょうがないので、魔法の i…

SpriteKit: sks ファイルの謎(3)

sks とはほとんど関係ないけれども、自作した class の class method の場合はどうやって定義するのかについて、備忘のため記しておこう。 SKSpriteNode を元にした class を生成し、class method は次のように定義した。 + (instancetype) spliteNodeWithCo…

SpriteKit: sks ファイルの謎

SpriteKit でブロックゲームのようなものを作ろうと久しぶりに template から製作してみたら、いつの間にか sks ファイルが登場していて、どうやら storyboard のように object を配置していく形を採れる様子。こりゃ便利だと早速いろいろ試してみたら何かと…

CloudKit: 同期するにはどうするか(2)

さて、同期させるのに具体的な code ですが、こんな感じになりました: + (NSArray *) queryCategory { dispatch_semaphore_t semaphore = dispatch_semaphore_create( 0 ); CKContainer* defaultContainer = [CKContainer defaultContainer]; CKDatabase* p…

CloudKit: All Records を取ってくるのはどうすんだ?

CloudKit を使っていて、master として登録した table から all records をとってくるのはどうするんだ? こんな単純なことがわからない。結論は、こんな感じ・・・ NSString* word = [NSString stringWithFormat:@"nil"]; NSPredicate* predicate = [NSPred…

CloudKit で error: <CKError 0x604000249c60: "Internal Error" (1/4000); "Couldn't send a valid signature">

CloudKit で、master data を cloud に保存しておき、アプリ起動時にダウンロードしようかなと思って試してみる。 うーん、文字列の query の方法がわからない・・・integer の query に切り替えてみたら、error 発生。 <CKError 0x604000249c60: "Internal Error" (1/4000); "Couldn't send a valid signature"> なにこれ? 調べてみたら、iPhone si</ckerror>…