sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

iOS

NSStreamでクライアントとしてTCPソケット通信を行う その3 完成

iOS

その2の続き まだ完全にテストはできていませんが、GCD専用で、メソッドが同期モードな、ソケット通信を行うクラスが出来上がりました。 クラス定義 命名規則等は慣れていないのですが、こんな感じで。 @interface TFTCPConnection : NSObject<NSStreamDelegate> @property (r</nsstreamdelegate>…

AndroidでUIActionSheetみたいなのを出したい?

Androidにあーゆー縦並びのボタンの文化はないから、AlertDialogでいいんじゃない?とか思ったりしますが、世の中では割と需要があるんでしょうか?(iOS->Android組?) んで個人的には、AlertDialogにカスタムViewを貼るのがいいんじゃないかなと思います。 …

GCDを使った同期通信処理の検討

iOS

ステートフルなプロトコルでサーバーと通信を行う時って、 サーバーに用意されている最大データ数を受信して 受信したいデータ数を送信して その数分だけのデータを受信して 受信完了ステータスを送信 こんな風に、同期モードでシーケンシャルに書きたくなり…

iOSアプリ開発者への道 その3 メモリ管理と同期

iOS

その2の続き ぼちぼちと読み進めてます。 公式ドキュメント 11. 高度なメモリ管理プログラミングガイド MMRでのメモリ管理のためのあれこれ。ARCを使わないなんて時間の無駄なので、これはもう読まなくても大丈夫なドキュメントだと思います。用語としてそ…

@propertyの属性

iOS

@property (strong, nonatomic) NSString* hoge とかの ()の中に書くやつ。 ARC環境下だと参照カウントの存在を忘れがちですが、プロパティとかの属性に気をつけないとたまにはまります。私の場合、まだまだひよっこでiOSのメモリ管理に慣れていないため嵌り…

CFHostによる名前解決

iOS

TCPソケット通信の記事に関連して、 CFHostを使いまわせば名前解決が最初の一度で済むなとかアホなことを考えて、ちょっと実装してみることにしました。 手順は公式ドキュメントのネットワーキングコンセプトの通りで、 CFHostCreateWithNameでCFHostRefオブ…

NSStreamでクライアントとしてTCPソケット通信を行う その2 クラス設計

iOS

その1の続き 手順はわかったので、実際に通信をするためのヘルパークラスを設計します。 delegateで非同期な通信が用意されているのは良いのですが、呼び出す側としては処理が面倒です。呼び出し元をGCDの並列キュー等の非同期で動かす事を前提として、ヘル…

NSStreamでクライアントとしてTCPソケット通信を行う その1

iOS

今作っているiOSアプリは、以前に作ったAndroid版の移植物なんですが、アカウント認証がwebで、実際のデータは、Androidと共用の自作サービスでやりとりすることになってます。 サーバー側のアプリはTCPで特定のポートをListenし、てきとーに自分で定義した…

iOSアプリ開発者への道 その2

iOS

前のエントリ の続き 実際にアプリを書きながらなので、Tips集とDocumentationとネットの検索に頼る事が増えましたが、平行して少しずつドキュメント類を消化している毎日です。(相変わらず納期は厳しいけれど…) どこまで理解すればいいのかはわかりませんが…

排他表示のUIViewをアニメーションで差し替える

iOS

一つのWindowの中に、排他で表示されるUIViewを複数保持し、Flip等のアニメーションをしながら別のViewへと表示を切り替える方法です。 UIView の transitionFromView:toView:duration:options:completion: を使えば簡単。表示中のViewと切替後のViewとアニ…

Bluetooth SensorTag

TI社のBluetooth SensorTag センサーてんこもりのデバイスが驚きのprice。 仕事柄(といっても、ハード方面ではなく、集めたデータを分析する側の端っこですが…)この手のデバイスには興味大。 一昔前だと、こんなの試作してもらうだけでえらい金がかかり、量…

地図を表示する (5.0以降のみ)

iOS

iOSでMapKitを使って地図表示を行うのはとても簡単です。5.0以降ならAndroidのMapActivityのように、位置情報を取得して、現在位置のトラッキングも勝手にやってくれるような機能まで入っています。 地図の出し方なんて今更な気もするのですが、iOSでちゃん…

iPhone4 (iOS 5.1.1) 到着

iOS

ヤフオクで落札した iPhone4 32GB (iOS 5.1.1)が届きました。早速、SBな4SからSIMを差し替えてセットアップし、一通り動作も確認。4Sはまだまだ高いですが、こっちなら諭吉さん一人分で買えるし、その気になればJBも…らしいので、まぁいいんじゃないかなと。…

別のViewContorollerへ遷移する時の情報の渡し方

UINavigationControllerで別のUIViewControllerを表示する時に、どうやって情報を伝えればいいのかちょっと悩んでました。 AppDelegateにデータ受け渡し用の変数を用意するんだろうか等々… androidで別の画面(Activity)を表示する場合は、class情報を含めたI…

iOS 6.1 & Xcode 4.6 まじめにRelease Noteも読んでみた

iOS

ほんとはβの時に目を通しておくべきなんでしょうけど、iOSの6.0->6.1のDiffと、Xcodeの4.5->4.6のRelease Noteをちゃんと読んでみました。 iOSは MapKitに機能の追加と、UICollectionViewにメソッド変更、バグ修正。 Xcodeも ARC利用時のバグ探知強化とintel…

Xcode を 4.6 にアップデート

ついに正式リリースされた iOS6.1とXcode 4.6。 納期は差し迫ってはいますが、この先のスケジュールを考えると、今 4.6にしておかないと後であげるタイミングがなくなる…ということで、えいやっとアップデートしちゃいました。 アップデートしようとしたら、…

NSDateメモ

iOS

JavaのDateと似たようなもので、ローカル日時の表示や差の計算は、 Formatter等がもっているTimeZoneに従って行われる。 あまり深く考え過ぎず、格納されてる値はGMTかUTC標準のミリ秒とだけ認識しておく方が良さげ。 現在の日時のオブジェクトを取得するな…

UIAlertViewのボタンイベントをDelegateじゃなくてBlockで処理したい another

iOS

前の記事の別解 わざわざUIAlertViewの派生クラスにしなくても、イニシャライザでBlockを受け取り、 実装したUIAlertViewDelegateのメソッド内でそれらを呼ぶだけのクラスを新規で定義して、そいつのインスタンスをUIAlertViewのdelegateに設定してやる方が…

UIAlertViewのボタンイベントをDelegateじゃなくてBlocksで処理したい

iOS

UIAlertViewでアラートを表示するのは簡単ですが、ボタンが押された時のイベントを受け取るのに毎回Delegateを定義するのはめんどくさいですよね。 仕方がないので、Blockを引数にできるクラスをUIAlertViewから派生させて作ってみました。 まずはインターフ…

UIAlertViewでログインダイアログ

iOS

5.0以降のみでしか使えませんが、UIAlertViewでログイン用のダイアログが簡単に出せるみたいです。 (余談ですが、コストとシェアを考えると、もうiOSは5.1以降のサポートだけでよさそうだし、5.1以降の機能をばんばん使っちゃえと思ってます) UIAlertView* a…

文字列を指定されたセパレータで切り分ける NSString componentsSeparatedByCharactersInSet:

iOS

指定された文字群で切り分けるってのはよく使う処理ですが、戻り値のNSArrayがどうなるのか、きちんと記録しておかないと後で迷いそうなのでメモ。 Adjacent occurrences of the separator characters produce empty strings in the result. Similarly if th…

HTTPでPOST その2 接続

iOS

前回の続き NSURLConnection NSURLRequestを作ったら、それを使ってNSURLConnectionのインスタンスを作ります。インスタンスがなくても通信はできるのだけど、Viewを閉じたり、ApplicationがInactivateされた時にも、きちんと通信をキャンセルできるように準…

NSObject isKindOfClass: オブジェクトのクラス判定メソッド

Objective-Cで、オブジェクトがそのクラス、もしくは派生クラスのオブジェクトかどうかを判定するためのメソッド。厳密にそのクラスのオブジェクトかどうかを判定する時はisMemberOfClass:を使えば良いらしい。 JavaのinstanceOfはすぐに出てくるのに、こっ…

ApplicationのActive/InactiveをViewControllerでも捕まえたい

iOS

前のエントリーでも書いたけど、ViewController自体には、ApplicationのActive/Inactiveのイベントをキャッチする仕組みは存在しない。 でも、Active/Inactiveを捕まえて何らかの処理をしないといけないことが多い訳で、なければ作らないとけいない。 さっと…

viewDidDisappearって見えなくなった時に呼ばれる訳ではない?

iOS

Androidの場合、ActivityやFragmentが画面に表示されるときにはonResume, 非表示時にonPauseなイベントが発生します。非表示というのは、文字通り画面から見えなくなったとき。他のアプリに切り替わってバックグラウンドに入った時にも、きちんとonPauseはや…

HTTPでPOST その1 Request組み立て

iOS

HTTPでPOSTするにはNSURLConnectionを使うのだけれど、実際にはNSURLRequestを組み立てる必要があります。 URL Encoding URLパラメータはURL EncodingしてUSASCIIだけにしないといけないんだけど、NSStringのurlEncodingは仕様上の欠陥があるので代替メソッ…

通信可否判定

iOS

Appleが提供している、Reachabilityのサンプルの中の、Reachabilityクラスを使うと簡単。 SystemConfiguration.frameworkの中のSCNetworkReachabilityRefのラッパーにあたるのだけど、 ARCに対応させるにはちょっとコツが必要。詳しくは、初めてのiOSプログ…

インタラクティブモードでの通信のお作法

iOS

ユーザの入力を発端とする通信の作法がよくわからないが、これといったガイドラインも見た記憶がないので、TwitterとFacebookのアカウント設定の動作を参考に考えてみた。 1. 通信中はタイトルを変える 通信中を示すダイアログを表示するのではなく、接続中…

HTTP/HTTPSで情報をやりとりする

iOS

NSURLConnection HTTP/HTTPSで接続を行うのに便利なクラス。接続には以下の3つの方式が使える。 iOS 5.0以降であれば、非同期のやつが簡単らしいが、接続を途中でキャンセルするためにはNSURLConnectionのインスタンスが必要になるため、結局使えるのはデリ…

NSUserDefaults - 設定を保存する

iOS

androidでいうところの、android.content.SharedPreferences。 それも、PreferenceManager.getDefaultSharedPreferences(Context context) で取得できるやつ。 Standard(Default)なやつや、適当に名前をつけたものが使える。 plist(xml)形式で、以下の型のデ…