けっこう簡単にできたのでメモ。 「(同じプロビジョニングを使用した)異なるアプリ間でデータ共有する方法」です。 KeychainSharingを利用するので、アプリを削除してもデータは消えません。 この領域に保存されたものは暗号化される?のでパスワードなどの保存領域として利用するものらしい。 データを保存する側のプロジェクト作成 まずはデータを保存する側のプロジェクトを適当に名前をつけて作成。 KeyChainGroupのIDをつける 次にKeychain のグループIDを付けます。任意でOKです。 ※ここでは「jp.itoz.sample.TestKeyChainSharing」としました。 他のアプリでも同じものを使います。 上記グループIDが設定されると、「.entitlements」ファイルが出来ています。 中を覗いてみると、先ほどのIDの前に、$(AppIdentifierPre
常々「クラス拡張をカテゴリってゆーな」って思ってるんだけど、「無名カテゴリ」自体は公式の呼称なんだよね。 [Objective-C] クラス拡張と無名カテゴリ - Qiita Objective-Cのクラス・カテゴリ・クラス拡張の整理 - $ cat /var/log/shin クラス拡張は、無名のカテゴリに似ています。が、別物です。一番の違いは、インスタンス変数を宣言できることと、宣言したメソッドはクラス本体の(=カテゴリ無しの)@implementationで実装しなければならない点です。 クラス拡張とカテゴリの一番の違いは、「クラス拡張はクラス実装と共にランタイムにロードされることが保証される」ことだと思います。 文脈として、もともとobj-c 2.0以前にはクラス拡張がなく、またメソッドのプロトタイプ宣言が必須だったこともあり、「外部に公開したくないメソッド宣言はプライベートなカテ
Objective-Cの勉強を始めてまだ一ヶ月にも満たないのですが、CocoaPodsのPodライブラリを開発&公開してみたくなり、西暦から和暦に変換するライブラリを書いて公開しました。コード的には微妙な箇所が多いですが、まずはライブラリ公開をゴールとしたかったので改善は後回しとします。 JapaneseCalendarYear Podライブラリは今までGitHubのPull Requestで追加していたのですが、ちょうど一週間前より仕様変更がありまして、TrunkというAPIサービスを利用して追加する方式にかわりました。使ってみたのですが、驚くほど簡単でしたので公開方法についてまとめます。 CocoaPodsライブラリ登録までの流れ 初めて登録する場合は下記の通りとなります。1番、5番は2回目以降は不要となります。 pod lib create #{library_name} ライブラリ
How do you know your fridge is dying? A refrigerator is one of the most essential household appliances that every homeowner needs. It helps to keep our food fresh, prevent spoilage, and saves us money by reducing food waste. However, like every machine, refrigerators have a lifespan, and eventually, they will begin to show signs … Read more How to slide on a longboard Longboarding is a fun and exc
I’m a huge fan of the transform property. Combining rotations, translations, and scalings is one of the easiest way to modify a shape of a UIView or a CALayer. While easy to use, regular transforms are quite limited in what they can achieve – a rectangular shape of a layer can be transformed into an arbitrary quadrilateral. It’s nothing to sneeze at, but there are much more powerful toys out there
iPhoneをはじめて手に取り地図アプリを起動させた時に、自分の位置がリアルタイムに動いていく様子を見て、位置情報という新たなプロパティが「自分」に加わった時の感動は忘れられない。 iOS7から搭載されたiBeacon機能はそんなGPS機能以上の感動と楽しさを与えてくれる。では一体この機能によってどのようなプロパティが「自分」に加わるのだろうか? と少し大げさな出だしではある。けれどもこのiBeaconは、リアルな世界のありとあらゆるサービスを変えるほどの大きな「考え方」となるのではないだろうか。 そして「モノのインターネット(Internet of Things)」の世界を手短に自分で実装できるのがこのiBeaconでもある。まずは「Hello World」としての仕組み、自分のMac自体をBeaconとして、それをiPhone(iOS端末)で受け取る仕組みを作ってみようと思う。 開発環
Appleのドキュメントを見ながら、CLLocationManager の Boolean を返す系のメソッドがそれぞれどういうことを意味しているのか調べてみました。 ただこの調査、iOS5リリース以前(2011年7月)に行ったものなので、情報が古いところがあるかもしれません。 locationServicesEnabled The user can enable or disable location services from the Settings application by toggling the Location Services switch in General. You should check the return value of this method before starting location updates to determine whether t
CoreLocation を使うアプリを作っているが、アプリを閉じる→再開の繰り返しをすると、数回に一度アプリが落ちる現象が出る。 Xcode のデバッガには、「com.apple.CoreLocation.ConnectionClient」と出て落ちているから当たりは間違い無いとは思うが、原因が分からない。 処理としては、CoreLocation の開始を viewDidLoad で行ってた。 そして、バックグラウンドからの復帰時に CoreLocation の開始が行われていないため、無理矢理 applicationDidBecomeActive で、viewController の viewDidLoad を呼ぶようにしていた。 つまり、連続での CoreLocation のスタートをかけているのがまずいのでは?と思い、この部分にあたりを付けてみた。 さて、この場合 1 回だけ Lo
前回の続き。今回はAFHTTPClientクラスの説明です。サーバーの各種APIを叩きたい時がありますよね。 例えばAPIのURLが以下のようになっているとします。 https://api.example.com/1.1/favorites/list.json – お気に入りの取得 https://api.example.com/1.1/direct_messages.json – ダイレクトメッセージの取得 https://api.example.com/1.1/statuses/update.json – つぶやきの投稿 つまり、https://api.example.com/1.1/の部分はみな同じで、それ以下のパスが変わります。こういった場合、AFHTTPClientを使うと便利です。 AFHTTPClientを初期化 NSURL *apiURL = [NSURL URLWithS
Objective-Cのクラスのキャストは少し緩くて、明らかにダウンキャストをしている場合でもコンパイル警告が出ません。 NSArrayはオブジェクトを追加できない Objective-Cを書き始めたばかりの人が混乱しがちなのが、NSArrayとNSMutableArrayの変換だと思います。 NSArray *array = [NSArray arrayWithObjects:@"zero", @"one", @"two", nil]; NSArrayがあって、これに値を追加したい場合が出てきます。しかし、NSArrayはイミュータブルなクラスなので、値を追加することができません。 [array addObject:@"three"]; こういうことをしようとするとコンパイル警告が出てしまいます。 だからってNSMutableArrayにキャストしてはいけない NSMutableArra
Amazon SNS Mobile Push 以下の画像をご覧ください。キタコレ! がしかし、諏訪くんに先を超されてしまいしたw。こちらでは、Amazon SNSを使ってApple iOS端末にプッシュ通知したいと思います。Androidな方は以下の記事をご覧ください。 [AWS] Amazon SNS の新機能「Mobile Push」を Android で使ってみた Apple Push Notification Services(APNS) APNSは、Appleが管理するiOS端末宛のプッシュ通知サービスです。今まで、このプッシュ通知を使うためには、BaaSや自前での構築が必要でしたが、今回の新機能によってAWSがやってくれるんですね!本記事では、Amazon SNSからMobile Pushを使ってAPNS経由でiOS端末に通知をすることができることをご紹介したいと思います。 プ
プッシュ通知を実装するときに、「バックグラウンドで通知受けたときはapplication:didFinishLaunchingWithOptions:とapplication:didReceiveRemoteNotification:、どっちが呼ばれるんだっけ?」とかなんだかいつも自信なくなってきてドキュメントを見返したりしてしまうので、ドキュメントと、実際の動作を確認した内容をまとめておきます。 (参考ドキュメント) Local Notification および Push Notification プログラミングガイド(日本語) (英語・最新版) アプリがバックグラウンドで動作中に通知が配信された場合の挙動 この場合、システムは、警告の表示、アイコンのバッジの表示、また、サウンドの再生を行う ことで通知を提示します。 アクションボタンがタップされると、システムはアプリケーションを起動しま
iOS データ設計入門の続きです。前回は iOS であつかうデータ全般について書きましたが今回はデータをフラッシュドライブに保存する方法について説明します。 データの永続化って何? メモリにあるデータはアプリを終了すると消えてしまいます。 アプリを終了しても残しておきたいデータはフラッシュドライブに保存する必要があります。メモリにあるフラッシュドライブに保存することをデータの永続化といいます。永続化されたデータはフラッシュドライブが壊れない限り永続的に保存され残ります。以降 iOS でフラッシュドライブがどのように管理されているのかと、データを永続化するのにどのような方法があるのかについて説明していきます。 フラッシュドライブを構成する3つの領域 データを永続化する方法を説明する前に iOS でフラッシュドライブがどのように管理されているか見ていきましょう。 iOS ではフラッシュドライブ
iOS でデータを永続化する方法の続きです。今回は Core Data を使ったデータの永続化方法について説明します。 本記事では複雑で習得が難しいとされている Core Data について概念編と実装編の2回に分けて説明していきます。記事の全体的な流れとしては Core Data がどういったフレームワークかというところから O/R マッピングの説明、Core Data を使うメリット、Core Data フレームワークの概要、Core Data を使ったプログラムの例まで説明します。次の記事で実際に動くサンプルを作成します。 Core Data って何? Core Data はモデルオブジェクトを永続化するためのフレームワークです。もとは Mac OS X のために開発されたフレームワークで、iOS 3.0 から使用できるようになりました。 Core Data はデータの永続化に SQ
Objective-Cのメモリ管理おさらいと解放tips こんにちは。 iOS/Objective-Cによるアプリ開発では参照カウントによるメモリ管理が必要になります。 今回はiOS/Objective-Cでのメモリ管理の基礎からメモリリークの検知まで解説したいと思います。 参照カウント Objective-Cの全てのオブジェクトはNSObjectを継承しています。 全てのオブジェクトはこのNSObjectのメソッドを通じて参照カウントを扱います。 この参照カウントが、オブジェクトがいくつのオブジェクトから強参照されているかを表し、 0になったオブジェクトは誰からも参照されていないため解放される、という仕組みになっています。 C++に詳しい方はshared_ptrをイメージすると良いでしょう。 より詳細な解説はWikipediaなどが参考になります。 Objective-Cの参照カウント
「Objective-CのBlocksの循環参照とその解決策」では、Blocksのメモリ管理の難しさと、世間ではよく使われている「weakSelfパターン」があまり良くないのではないかということを書きました。 このブログでは、いろいろ考えた結果たどりついた、僕が考えるBlocksの使い方を書きたいと思います。 サンプルをgithubに載せましたので、良ければそちらも参照してください。( BlocksMemoryExample ) Blocksを安全で便利に使うために必要なこと 先に、Blocksを安全で便利に使うためには、どんなことが必要なのかというのを考えておきたいと思います。 循環参照におちいらず、使用後に解放される。 使い手が内部の実装をできるだけ意識する必要がない。 おまじない的なコードを書く必要がない。 できるだけBlocksに渡すオブジェクトの存在を保証する。 そして、Bloc
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く