iOS
その2の続き まだ完全にテストはできていませんが、GCD専用で、メソッドが同期モードな、ソケット通信を行うクラスが出来上がりました。 クラス定義 命名規則等は慣れていないのですが、こんな感じで。 @interface TFTCPConnection : NSObject<NSStreamDelegate> @property (r</nsstreamdelegate>…
Androidにあーゆー縦並びのボタンの文化はないから、AlertDialogでいいんじゃない?とか思ったりしますが、世の中では割と需要があるんでしょうか?(iOS->Android組?) んで個人的には、AlertDialogにカスタムViewを貼るのがいいんじゃないかなと思います。 …
ステートフルなプロトコルでサーバーと通信を行う時って、 サーバーに用意されている最大データ数を受信して 受信したいデータ数を送信して その数分だけのデータを受信して 受信完了ステータスを送信 こんな風に、同期モードでシーケンシャルに書きたくなり…
その2の続き ぼちぼちと読み進めてます。 公式ドキュメント 11. 高度なメモリ管理プログラミングガイド MMRでのメモリ管理のためのあれこれ。ARCを使わないなんて時間の無駄なので、これはもう読まなくても大丈夫なドキュメントだと思います。用語としてそ…
@property (strong, nonatomic) NSString* hoge とかの ()の中に書くやつ。 ARC環境下だと参照カウントの存在を忘れがちですが、プロパティとかの属性に気をつけないとたまにはまります。私の場合、まだまだひよっこでiOSのメモリ管理に慣れていないため嵌り…
TCPソケット通信の記事に関連して、 CFHostを使いまわせば名前解決が最初の一度で済むなとかアホなことを考えて、ちょっと実装してみることにしました。 手順は公式ドキュメントのネットワーキングコンセプトの通りで、 CFHostCreateWithNameでCFHostRefオブ…
その1の続き 手順はわかったので、実際に通信をするためのヘルパークラスを設計します。 delegateで非同期な通信が用意されているのは良いのですが、呼び出す側としては処理が面倒です。呼び出し元をGCDの並列キュー等の非同期で動かす事を前提として、ヘル…
今作っているiOSアプリは、以前に作ったAndroid版の移植物なんですが、アカウント認証がwebで、実際のデータは、Androidと共用の自作サービスでやりとりすることになってます。 サーバー側のアプリはTCPで特定のポートをListenし、てきとーに自分で定義した…
前のエントリ の続き 実際にアプリを書きながらなので、Tips集とDocumentationとネットの検索に頼る事が増えましたが、平行して少しずつドキュメント類を消化している毎日です。(相変わらず納期は厳しいけれど…) どこまで理解すればいいのかはわかりませんが…
一つのWindowの中に、排他で表示されるUIViewを複数保持し、Flip等のアニメーションをしながら別のViewへと表示を切り替える方法です。 UIView の transitionFromView:toView:duration:options:completion: を使えば簡単。表示中のViewと切替後のViewとアニ…
TI社のBluetooth SensorTag センサーてんこもりのデバイスが驚きのprice。 仕事柄(といっても、ハード方面ではなく、集めたデータを分析する側の端っこですが…)この手のデバイスには興味大。 一昔前だと、こんなの試作してもらうだけでえらい金がかかり、量…
iOSでMapKitを使って地図表示を行うのはとても簡単です。5.0以降ならAndroidのMapActivityのように、位置情報を取得して、現在位置のトラッキングも勝手にやってくれるような機能まで入っています。 地図の出し方なんて今更な気もするのですが、iOSでちゃん…
ヤフオクで落札した iPhone4 32GB (iOS 5.1.1)が届きました。早速、SBな4SからSIMを差し替えてセットアップし、一通り動作も確認。4Sはまだまだ高いですが、こっちなら諭吉さん一人分で買えるし、その気になればJBも…らしいので、まぁいいんじゃないかなと。…
UINavigationControllerで別のUIViewControllerを表示する時に、どうやって情報を伝えればいいのかちょっと悩んでました。 AppDelegateにデータ受け渡し用の変数を用意するんだろうか等々… androidで別の画面(Activity)を表示する場合は、class情報を含めたI…
ほんとはβの時に目を通しておくべきなんでしょうけど、iOSの6.0->6.1のDiffと、Xcodeの4.5->4.6のRelease Noteをちゃんと読んでみました。 iOSは MapKitに機能の追加と、UICollectionViewにメソッド変更、バグ修正。 Xcodeも ARC利用時のバグ探知強化とintel…
ついに正式リリースされた iOS6.1とXcode 4.6。 納期は差し迫ってはいますが、この先のスケジュールを考えると、今 4.6にしておかないと後であげるタイミングがなくなる…ということで、えいやっとアップデートしちゃいました。 アップデートしようとしたら、…
JavaのDateと似たようなもので、ローカル日時の表示や差の計算は、 Formatter等がもっているTimeZoneに従って行われる。 あまり深く考え過ぎず、格納されてる値はGMTかUTC標準のミリ秒とだけ認識しておく方が良さげ。 現在の日時のオブジェクトを取得するな…
前の記事の別解 わざわざUIAlertViewの派生クラスにしなくても、イニシャライザでBlockを受け取り、 実装したUIAlertViewDelegateのメソッド内でそれらを呼ぶだけのクラスを新規で定義して、そいつのインスタンスをUIAlertViewのdelegateに設定してやる方が…
UIAlertViewでアラートを表示するのは簡単ですが、ボタンが押された時のイベントを受け取るのに毎回Delegateを定義するのはめんどくさいですよね。 仕方がないので、Blockを引数にできるクラスをUIAlertViewから派生させて作ってみました。 まずはインターフ…
5.0以降のみでしか使えませんが、UIAlertViewでログイン用のダイアログが簡単に出せるみたいです。 (余談ですが、コストとシェアを考えると、もうiOSは5.1以降のサポートだけでよさそうだし、5.1以降の機能をばんばん使っちゃえと思ってます) UIAlertView* a…
指定された文字群で切り分けるってのはよく使う処理ですが、戻り値のNSArrayがどうなるのか、きちんと記録しておかないと後で迷いそうなのでメモ。 Adjacent occurrences of the separator characters produce empty strings in the result. Similarly if th…
前回の続き NSURLConnection NSURLRequestを作ったら、それを使ってNSURLConnectionのインスタンスを作ります。インスタンスがなくても通信はできるのだけど、Viewを閉じたり、ApplicationがInactivateされた時にも、きちんと通信をキャンセルできるように準…
Objective-Cで、オブジェクトがそのクラス、もしくは派生クラスのオブジェクトかどうかを判定するためのメソッド。厳密にそのクラスのオブジェクトかどうかを判定する時はisMemberOfClass:を使えば良いらしい。 JavaのinstanceOfはすぐに出てくるのに、こっ…
前のエントリーでも書いたけど、ViewController自体には、ApplicationのActive/Inactiveのイベントをキャッチする仕組みは存在しない。 でも、Active/Inactiveを捕まえて何らかの処理をしないといけないことが多い訳で、なければ作らないとけいない。 さっと…
Androidの場合、ActivityやFragmentが画面に表示されるときにはonResume, 非表示時にonPauseなイベントが発生します。非表示というのは、文字通り画面から見えなくなったとき。他のアプリに切り替わってバックグラウンドに入った時にも、きちんとonPauseはや…
HTTPでPOSTするにはNSURLConnectionを使うのだけれど、実際にはNSURLRequestを組み立てる必要があります。 URL Encoding URLパラメータはURL EncodingしてUSASCIIだけにしないといけないんだけど、NSStringのurlEncodingは仕様上の欠陥があるので代替メソッ…
Appleが提供している、Reachabilityのサンプルの中の、Reachabilityクラスを使うと簡単。 SystemConfiguration.frameworkの中のSCNetworkReachabilityRefのラッパーにあたるのだけど、 ARCに対応させるにはちょっとコツが必要。詳しくは、初めてのiOSプログ…
ユーザの入力を発端とする通信の作法がよくわからないが、これといったガイドラインも見た記憶がないので、TwitterとFacebookのアカウント設定の動作を参考に考えてみた。 1. 通信中はタイトルを変える 通信中を示すダイアログを表示するのではなく、接続中…
NSURLConnection HTTP/HTTPSで接続を行うのに便利なクラス。接続には以下の3つの方式が使える。 iOS 5.0以降であれば、非同期のやつが簡単らしいが、接続を途中でキャンセルするためにはNSURLConnectionのインスタンスが必要になるため、結局使えるのはデリ…
androidでいうところの、android.content.SharedPreferences。 それも、PreferenceManager.getDefaultSharedPreferences(Context context) で取得できるやつ。 Standard(Default)なやつや、適当に名前をつけたものが使える。 plist(xml)形式で、以下の型のデ…