タグ

studyとObjective-Cに関するraimon49のブックマーク (94)

  • [iOS5] ARC : Autorelease, キャスト, 環境設定 | Natsu note

    これまでの記事はこちら: [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 [iOS5] ARC : Outletにはweakプロパティを使おう [iOS5] ARC : 循環参照 ARCまとめの最終回はAutoreleaseとキャストについてです。また、最後で簡単にですが、Xcodeの環境設定についても触れます。 Autorelease ARC環境下では、これまでのNSAutoreleasePoolは使えません。そうは言っても、別にAutorelease環境がなくなってしまったわけではなく、作法が少し変わったのですね。 まずは、参考までにmain.mを見てみましょう。 非ARC(マニュアルメモリ管理) int main(int argc, char *argv[]) { NSAuto

    raimon49
    raimon49 2012/10/22
    bridgeタイプ __bridge以外を指定した時は自分でCFRelease()を呼んでrelease
  • Objective-Cで少しでも疎結合なプログラムを書くためのチェックポイント | TOKOROM BLOG

    チェック1. なんでもかんでもヘッダーファイルでimportしていませんか? 例えば、こんなコードを書いていませんか? #import "OtherLibrary1.h" #import "OtherLibrary2.h" @interface Library @property (strong) OtherLibrary1* otherLibrary1; @property (strong) OtherLibrary2* otherLibrary2; @property (assign) BOOL flag; @end Libraryというクラスを作り、そこでOtherLibrary1とOtherLibrary2をpublicなpropertyとする場合、当然のごとくOtherLibrary1とOtherLibrary2のimportが必要なわけですが、なにも考えずにヘッダーファイルでO

    raimon49
    raimon49 2012/10/17
    ヘッダファイル内に@class構文で利用クラスの前方宣言。実装側でimport
  • iOSアプリからフォトライブラリに触われるAssetsLibraryについて | Technology-Gym

    Assets Library Framework Reference について. アプリ内で保存する画像をアプリ独自のdocumentフォルダに保存して使うのではなくて、フォトライブラリに保存して利用できるようできないかなと思い、 フォトライブラリに関するフレームワークのAssets Libraryについて調べたことのメモ書きです。 (検証はしてないので、正確性は保証されません) AssetsLibraryの概要 memo: Assets Library Framework クラスの概要。 AppleのAssets Library Framework Referenceと一緒に見る AssetsLibraryについて (iOS5対応版) このスライドがよくまとまってる。 iOS4とiOS5で同じ要素でも結構違う所がある。 AssetsLibraryについて私が知っている二、三の事柄 – m

  • UIImageやUIImagePickerControllerの使い方について.(StackOverflowの記事の和訳) - じょにーさんのにっき

    UIImageやUIImagePickerの使い方について分かり易くまとめている記事を見つけたので,和訳してみました.もし誤訳を発見されましたら,ご指摘いただけると幸いです. 元記事: iphone - UIImagePickerController, UIImage, Memory and More? - Stack Overflow #### 以降,記事の和訳 #### 私はUIImageオブジェクトの扱い方についての質問が多いことに気付きました。 特に多いのは、UIImagePickerControllerとの連携や、ビュー上(大抵はUIImageView)への表示についての質問です。 それらに関してよくある質問とそれに対する回答を集めてみました。 編集や追加はお気軽にどうぞ。 私はこれらすべての情報をいろいろなところで学びました。 フォーラムでの様々な投稿、StackOverflo

    UIImageやUIImagePickerControllerの使い方について.(StackOverflowの記事の和訳) - じょにーさんのにっき
    raimon49
    raimon49 2012/10/16
    撮影した画像をそのまま使うのは注意が必要。
  • C/Objective-C + Blocks でクロージャ - TrashSUITE

    Blocks というのは Apple が C/C++/Objective-C 向けに独自実装したクロージャ的な機能.Snow Leopard リリース時に GCD すげぇ!という記事で見かけて『Apple やりやがった,あの変態やりやがった』くらいにしか思っていなかったのだけど,iPhone OS4.0 で使うことになりそうなので,ザックリと調べてみた ザクザクっとドキュメントを読みつつテストしつつという状態で書いたメモなので,嘘を書いている可能性が大いにある! 以下,Blocks をクロージャと呼ぶ シンプルに // 無名でダイレクトに呼ぶ ^(void) {puts("closure");}(); //=> closure ^() {puts("closure");}(); //=> closure ^{puts("closure");}(); //=> closure // 名前を付

    raimon49
    raimon49 2012/10/12
    __block付きで宣言した値をBlock_copy()とBlock_release()で持ち回せる。
  • https://developer.apple.com/jp/devcenter/ios/library/documentation/CocoaEncyclopedia.pdf

  • GCD すごい - yashiganiの英傑になるまで死ねない日記

    iOS には,iOS4.0 から GCD っていう非同期処理の仕組みが入ったんだけど,今までこれという活かしどころがなくて使っていなかった ちょうどいい感じの活かしどころが出てきたのでここぞとばかりに試してみた. 音楽再生するアプリで自分の iPod Library からリストに上がっている曲を探してくるんだけど,これが 50 コくらい探そうと思うと結構な量の曲数が入っているライブラリとか,3GS だとむっちゃ時間がかかって画面の遷移に挟んだりすると,とてもじゃないけど精神衛生に支障をきたすレベルのロックがかかる(5~20秒くらい) こんなかんじ for (NSString *title in titles) { MPMediaPropertyPredicate *titlePredicate = [MPMediaPropertyPredicate predicateWithValue:t

    GCD すごい - yashiganiの英傑になるまで死ねない日記
  • UIView画像加工レシピ集 - jarinosuke blog

    リッチなインターフェースにするために。 アプリを作る以上、ダウンロードしてもらったユーザには一回でも多くタップしてもらいたいですよね。 タップワーシィな UI を作るためには、現実のメタファーを反映させたコントロールを作る必要があります。 もちろん iOS SDK に付属している UIKit を用いるだけで十分な場合も多いのですが、今までにない独創的なアプリを作るためには、自分でイチから UI を作り込まなければいけない場合もあります。 しかし、 イチから作るとなると CoreAnimation や Quartz など今まであまり触ったことのないレイヤまで手を加えないといけないような気がして、腰が引けてしまったりすると思います。(自分がそうだっただけですが…) そこで「CoreAnimation とか良く分かってないけど、ちょっとリッチな UI にしてみたい」っていう人のために、簡単な画像

    UIView画像加工レシピ集 - jarinosuke blog
    raimon49
    raimon49 2012/10/10
    QuartzCoreで画像変形
  • Jenkins を iOS アプリ開発に導入してみた (GHUnit編)

    前回 はSenTestKitを用いてJenkins上で単体テストの自動実行を行いました。今回はGHUnitを使った単体テストの自動実行にチャレンジしてみたいと思います。またついでといっては何ですが、単体テスト時に必要になってくるモックを作成するためのライブラリOCMockも同時に導入してみようと思います。 ■なぜGHUnitを使うのか GHUnitを使うことで、SenTestingKitと比べて以下のようなメリットが得られます。 非同期処理のテストを行うための仕組みが用意されている(GHAsyncTestCase)これをSenTestingKitないし他のテスティングフレームワークでやろうとすると大変骨が折れます。 .app形式(要するに実際のiOSアプリケーション)でテストを実行するため、UIApplicationやUIWindowといったUIコンポーネントを使うクラスのテストが可能にな

    Jenkins を iOS アプリ開発に導入してみた (GHUnit編)
    raimon49
    raimon49 2012/10/10
    配布framework版でなく実機ビルド版で。
  • GHUnitとOCMockでUnit Test効率化 - jarinosuke blog

    また、テストを書く。 最近 iOS 界隈のテストのベストプラクティスについて調べているのですが、そこで目に留まった文章があるのでまずそれを紹介します。 How comfortable are you on a bike without a helmet? Writing code without tests is like riding a bike without a helmet. You might feel free and indestructible for now, but one day you’ll fall and it’s going to hurt. http://paulsolt.com/2010/11/iphone-unit-testing-explained-part-1/ ヘルメットを付けずに自転車を漕ぐのはとても快適ですね。でも、ふとしたある日に取り返しの

    GHUnitとOCMockでUnit Test効率化 - jarinosuke blog
    raimon49
    raimon49 2012/10/10
    標準付属のSenTestingKitとGHUnit 比較
  • Yohei Yoshihara's Home Page

    MySimplePlan More Detail Magquash More Detail Previous Next

    raimon49
    raimon49 2012/10/10
    関数内で生成してreturnされたオブジェクトはautoreleaseプールに入れられる。@autoreleasepool {}で囲われていれば、抜けたタイミングでリリースされる。
  • Cocoaの日々: [iOS] バックグラウンド実行見本(Task Completion)

    (2011-12-01 追記あり)UIApplicationDelegateの呼び出しが iOS5 から変わった件。 Task Completion を使った iOS4 でのバックグラウンド実行サンプルを作ってみた。 サンプル 実行するとキューにたまった 30個のデータが順番に処理されてテーブルから消えていく。 処理は GCD を使い別スレッドで実行される。右上の[+]ボタンを押すとキューへデータが追加されていく。途中でホームボタンを押してアプリを切り替えても Task Completion によって処理は停止すること無く実行され続ける。わかりやすいようにアプリのアイコンバッヂに残タスク数を表示してみた。 バッジの数字は時間と共にカウントダウンされていくので処理が行われていることが確認できる。 Task Completion とは? Task Completion は、iOS4 から導入さ

    Cocoaの日々: [iOS] バックグラウンド実行見本(Task Completion)
  • Grand Central Dispatchで楽々マルチスレッド iPhoneプログラミング - @yuumi3のお仕事日記

    iPhoneでもiOS4以降サポートされたGrand Central Dispatchを使うと、マルチスレッドを使ったプログラムが簡単に作れます。WWDC 2010のビデオ(#206, #211) を見て何となく判った気になったのですが、まだクリアでない点があったので自分でコードを書いてみました。 私の理解では、Grand Central Dispatch(GCD)はには マルチプロセッサを有効に使える、並列プログラムを簡単に書ける 操作性を高める、並行処理を簡単に書ける の2つの目的があると思います。ここでは 2. に付いて書きます。 1.については Wikipediaの The second exampleが参考になると思います。 今回のサンプル ここでは、Twitterのpublic timelineを取得し、つぶやきとアイコンを表示するプログラムを、スレッドをまったく使わないコード

    Grand Central Dispatchで楽々マルチスレッド iPhoneプログラミング - @yuumi3のお仕事日記
  • NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life

    バックグラウンド処理を手軽に実行できる NSOperation クラスですがこのクラスをきちんと理解して使うには NSOperationQueue クラスについて理解する必要があります。 前回の記事で NSOperationQueue の使い方について説明しました。まだお読みでない方はこちらの記事を先に目を通しておくことをお勧めします。 NSOperationQueue スレッドと処理の関係 今回は NSOperation について NSURLConnection を使ったサーバ通信プログラムを例に説明していきます。 NSOperation には2つの実行モードが存在する NSOperation クラスには「非並列実行モード」と「並列実行モード」の2つの実行モードがあります。 非並列実行モードは処理の終了を NSOperationQueue に任せるのに対し、並列実行モードはプログラマが任

    NSOperation 非並列実行モードと並列実行モードの使い分け - A Day In The Life
  • SimpleBoxes | Objective-C / ARC で unsafe_unretained 利用時のインスタンス破棄タイミングについて

    ここ最近のコーディングでは iOS5 SDK と同時に登場した ARC (Auto Reference Counting) を利用しています。 ARC の導入と注意点については、iOS 開発ブログ Natsu's note さんの一連の記事がとても参考になります。 [iOS5] ARC (Automatic Reference Counting) : Overview [iOS5] ARC : プロパティ属性と使い方 [iOS5] ARC : Outletにはweakプロパティを使おう [iOS5] ARC : 循環参照 [iOS5] ARC : Autorelease, キャスト, 環境設定 C++ with boost に慣れた人なら、ARC はスマートポインタ (SmartPtr, AutoPtr) に近い動作をするという認識でよいと思います。 代入 (アサイン) 動作で参照カウンタ

    raimon49
    raimon49 2012/10/05
    __autorelasing修飾子による参照と併用
  • iOS 開発で、EXC_BAD_ACCESS とさよならするための6つのルール – Zero4Racer PRO Developer's Blog

    2012/3/22 いくつか修正、加筆しました。 追記もご覧下さい:iOS 開発で、EXC_BAD_ACCESS とさよならするための6つのルール [追記] カプセル化について « Zero4Racer PRO Developer’s Blog 対象がiOS4以上の場合は、ARCを使用するのもオススメです。iOS 5 公開記念! Objective-Cのメモリ管理の革命、 ARC 超入門(サンプルはgitHubに公開) « Zero4Racer PRO Developer’s Blog をご覧下さい。 @Awaresoft さんのこの記事が、ほとんどすべての疑問に答えています。とてもよい記事なので合わせてご覧下さい。プロパティに対応するインスタンス変数の命名規則について – Awaresoft iOS プログラミングでのメモリ管理の基 iPhone開発で主に使用される言語は、Object

    raimon49
    raimon49 2012/09/26
    ARCとの対応も。retainとreleaseはinit, deallocの中のみ、他の関数内では=nil。allocとautoreleaseはセット(AppleやGoogleのガイドラインと同様)。delegateは割り当てたオブジェクトが自身の責任で=nil、ARCでweakプロパティとした時と同義。
  • iOS Viewライフサイクルまとめ、iOS6での変更点 – Zero4Racer PRO Developer's Blog

    TwitterでViewライフサイクルについて話題になったので、まとめてみました。 @tomohisa @gaolay @replicantnexus6 @t_okada これまではiOS5では呼ばれてましたね。5ではwillUnloadっていう使いドコロのわからないメソッドも追加されてそれも呼ばれてましたし。 — kishikawa katsumiさん (@k_katsumi) 9月 20, 2012 シングルビューの動作 こちらが基となります。よく勘違いされているのは、ViewDidUnloadは、いつもViewが閉じるときに呼ばれるというものですが、これは間違いで、通常、ViewDidUnloadは呼ばれません。 モーダルビューが呼ばれたとき モーダルビューが呼ばれたときの注意点は、裏にあるビューは、一度UIWindowから削除されて、ViewDidDisappearが走るという点

    raimon49
    raimon49 2012/09/24
    ViewDidUnloadは呼ばれないので、モーダルビューの片付け処理が必要ならdidReceiveMemoryWarningで。
  • [iOS6] Collection View 基本的な使い方 | Natsu note

    ついにiOS 6がリリースされましたね。iOS 6では、また数多くの機能が追加されました。ユーザー目線での新機能もさることながら、個人的には開発者にとって嬉しい新機能 Collection View に注目しています。 Collection Viewとは Collection Viewとは、一言で言えば縦横方向にセルを並べることができるTable Viewのようなものです。UICollectionViewControllerを用いて画面を作成し、セルの中身は、UITableViewControllerと同様にDataSourceを使って指定します。 各セルのサイズは一定である必要はなく、また、セル間の最低間隔を指定しておくことで、レイアウトが自動で計算されキレイに配置されます。 かなり少ないコード量で、以下のスクリーンショットのようなUIを実現することが可能です。もちろん、デバイスの向きが

    [iOS6] Collection View 基本的な使い方 | Natsu note
  • SIHOのプログラミングわーくワク releaseとremoveFromSuperViewとdeallocのこと

    興味の赴くままに勉強してたら、読み書きできる言語は9個になりました。他にもいくつか気になる言語があったりなかったり?  まだまだ続く、楽しいお仕事わーくワク♪ « 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 » 2010.10.05 (Tue) Twitterでのやり取りで@5mingame2さんにとてつもなく大事なことを教わったので、ここにメモとして記しておきます。感謝!感謝!です。 ※文章は意味を変更せず、言い回しだけ記事として理解しやすいように書き直しています。変な書き方があったら私のせいです。ごめんなさい。 「Objective-cの「参照カウンタ」という仕組みについて理解しておくとよりよいですよ。」 そんな言葉から始まりました。 ■概要説明 表示中のUIVi

    raimon49
    raimon49 2012/09/13
    autoreleaseなら忘れず解放される理由。alloc(+1) addSubView(+1) removeFromSuperView(-1) release(-1) Googleスタイルガイドでも余程のことが無い限り変数確保とセットでautoreleaseを推奨。
  • autoreleaseすることの利点 - ASとか

    はじめに このエントリは、メモリ管理でミスしないために - ASとかの説明です。同時に開きつつ見て下さい。 autoreleaseされるオブジェクト 一時的に使用するオブジェクトを生成する際、以下のように記述しているケースをよく見かけます。 DataImporter *importer = [[DataImporter alloc] init]; // いろいろする [importer release]; これは何も間違っていませんが、私は以下のようにすべきだと考えています。 DataImporter *importer = [[[DataImporter alloc] init] autorelease]; // いろいろする また、クラスによってはautoreleaseされるオブジェクトを返すクラスメソッド(コンビニエンスコンストラクタ)が用意されているものもあります。 // Data

    autoreleaseすることの利点 - ASとか
    raimon49
    raimon49 2012/09/07
    ブロックスコープにNSAutoreleasePool