タグ

Objective-Cに関するMuneOchiのブックマーク (29)

  • @synchronized による排他制御を行う : Objective-C プログラミング

    Objective-C には @synchronized という、複数スレッドからの同時アクセスをブロックする排他制御を行う仕組みが用意されています。 この @synchronized ディレクティブでは、引数に指定した Objective-C インスタンスをキーにして、他からの同時アクセスをブロックしたり、他がブロックを解除されるのを待ったりできます。 これと同等の排他制御として ミューテックス があります。 他にも セマフォ、@property の atomic キーワード、NSLock、NSRecursiveLock などが利用できます。 クリティカルセクションを保護する 同時アクセスされたくない個所を、キーとして使う Objective-C インスタンスを引数にして @synchronized で括ります。 引数に渡すキーには self も使えるので、クラスインスタンス全体で 1

  • [iOS]NSURLConnectionを利用してHTTP通信 - l4l

    iOSアプリでHTTP通信を実装するベーシックな方法はFoundation Frameworkで提供されているNSURLConnectionを利用すること。ドキュメントの「URL Loading System Programming Guide」を一通り読んだので、その基的な使い方をまとめてみる。 デフォルト設定でGET通信 まずはコードから。Window-based Applicationのプロジェクトテンプレートに対して、処理のエントリポイントをapplication:didFinishLaunchingWithOptions:に追加、他のメソッドは新規で作成。receivedDataはヘッダで定義されているNSMutableData型の変数。あ、テストコードなのでメモリ管理とか気にせず書いてます、あしからず。 - (BOOL)application:(UIApplication *

  • CoreData の NSManagedObject のサブクラスを変更する場合はカテゴリを使うと便利 - 24/7 twenty-four seven

    CoreDataのモデルクラスはXcodeのモデルエディタから自動生成しますが、生成されたクラスにメソッドを追加したりしたいことがあると思います。 そのとき、自動生成されたファイルを直接変更してしまうと、モデルに変更がありモデルクラスを再生成したときにその変更が上書きされてしまいます。 そこで、カテゴリを使って追加部分は別のファイルに分けておくと、モデルクラスを再生成しても後から追加した部分は上書きされずに残るのでそのまま使えます。 例えば下記のようなクラス (Event.h) があるとして、条件でフェッチするメソッドや、日付をフォーマットして返すメソッドを Event+CoreData.h/m や Event+Formatter.h/m として別ファイルに定義します。 // Event.h #import <Foundation/Foundation.h> #import <CoreDa

    CoreData の NSManagedObject のサブクラスを変更する場合はカテゴリを使うと便利 - 24/7 twenty-four seven
    MuneOchi
    MuneOchi 2013/04/16
    NSManagedObject のサブクラスのメソッド追加
  • @synthesize vs @dynamic, what are the differences?

    Ask questions, find answers and collaborate at work with Stack Overflow for Teams. Explore Teams Collectives™ on Stack Overflow Find centralized, trusted content and collaborate around the technologies you use most. Learn more about Collectives

    @synthesize vs @dynamic, what are the differences?
  • 2009-08-12

    初期値設定 引数が設定されていなかったら、指定した初期値を設定して処理を続ける func(){ local arg1=${1:-default1} echo $arg1 }変数を指定した場合 $ func test test指定していない場合 $ func default1 文字列から指定した文字を削除する 先頭、もしくは末尾からであれば、sedやperlを使うまでもない。 先頭の場合には、「#」末尾の場合には「%」を使う target="1234567890"先頭の123を削除 echo ${target#123}末尾の890を削除 echo ${target%890}先頭の3文字を削除 echo ${target#???}末尾の3文字を削除 echo ${target%???}先頭の4までを削除 echo ${target#*4}末尾の7までを削除 echo ${target%7*}フ

    2009-08-12
    MuneOchi
    MuneOchi 2013/03/15
    NSDate 文字列 曜日
  • わだjective-C UISearchBarの背景色を透明にする

    UISearchBarの 背景色を透明にしたかったんですが、普通に色セットするのではだめみたいですね UISearchBar* searchBar; //////////////////////////////////////////////////////////////// // これだと背景色が黒になってしまいます。 [searchBar setTintColor: [UIColor clearColor]]; //////////////////////////////////////////////////////////////// // これだと色が反映されません。 [searchBar setBackgroundColor: [UIColor clearColor]]; ですので他の方法をいくつか試してみて有効だったものをのせていきます //////////////////

    MuneOchi
    MuneOchi 2013/02/18
    UISearchBarの背景
  • CoreLocationサンプル1 - 現在位置の取得と領域観測 | UQ Times 開発の記録

    CoreLocationサンプル1 - 現在位置の取得と領域観測 | ラベル: iOS, Objective-C, サンプルコード Tweet 今回もiOSデバイスが持っている機能を利用するものとして、位置情報サービスについて進めてゆきます。 iOS Developer Libraryの「位置情報対応プログラミングガイド」(英語版はMaking Your Application Location-Aware)に沿って、サンプルを公開します。 注意点カメラ・加速度センサー・ジャイロスコープ・磁力センサーなどのハードウェアを利用する場合とは、以下の点で異なります。 位置情報サービスを利用する場合は、ユーザに確認を取らなければならない 確認用のダイアログはフレームワークが自動的に表示してくれます。必要になる直前に確認するようにしなければ、ユーザが「なぜその機能が必要なのか?」という懸念を

  • NSOperationQueue スレッドと処理の関係 - A Day In The Life

    iOS4 になって NSOperationQueue クラスの仕様に追加がありました。以前は並列処理しか出来なかったのですが mainQueue メソッドが追加になり逐次処理も出来るようになりました。変更点も含めて NSOperationQueue の使い方をまとめてみます。 NSOperationQueue クラスの使い方をきちんと理解していると NSOperation クラスの非並列実行モードと並列実行モードの使い方を間違えることも少ないと思います。 NSOperation クラスについては以下の記事で詳しく説明しています。 NSOperation 非並列実行モードと並列実行モードの使い分け NSOperationQueue と NSOperation の関係 NSOperationQueue と NSOperation を使うと、バックグラウンドで何か処理をしたい場合に一連の処理をま

    NSOperationQueue スレッドと処理の関係 - A Day In The Life
  • iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する - A Day In The Life

    iOS は タッチパネル式端末用に最適化された OS で ユーザが端末を操作しやすいように GUI の仕組みが提供されています。iOS アプリ開発では主に GUI を操作するプログラムを実装していきます。iOS の GUI プログラムはイベント駆動型と言われるプログラミング方式に則ってプログラムを実装していきます。 iOS に限らず Mac OS 用のアプリ開発でも同じようにイベント駆動型のプログラムを実装しますが、 iOS はタッチパネル式モバイル端末用の OS という性質上 Mac OS のイベント駆動プログラムと少し違うところがあります。 この記事では iOS のイベント駆動の仕組みを「ライフサイクルイベント」と「ユーザアクションイベント」にわけて説明します。iOS のイベント駆動がどういったものなのか理解してその仕組みの上で自由にプログラムできるようになることが目的です。 イベント

    iOS のイベント駆動をライフサイクルイベントとユーザアクションイベントにわけて理解する - A Day In The Life
    MuneOchi
    MuneOchi 2012/12/07
    ライフサイクルイベント
  • Cocoaの日々: CoreData - マイグレーションを考慮した CoreDataManager パターン

    CoreData を使うアプリであればこの程度の件数はすぐに行くので、起動時にマイグレーションが走ると確実に落ちてしまう。これを防ぐためには起動時に CoreData へアクセスさせないのが最低限の対策になるが、その場合でもユーザが CoreData へアクセスする操作を行った瞬間にマイグレーション処理に時間がかかって画面が固まったようになるのでユーザビリティは良くない。 マイグレーションを考慮したパターン よって CoreDataを使うアプリではマイグレーション用の画面を用意するのがベスト。処理フローはこんな感じ。 起動 ↓ (1)マイグレーションチェック もし必要なら、マイグレーション用の画面へ遷移し、(2)マイグレーション実行 ↓ 通常画面マイグレーションチェックは NSPersistentCoordinator を使えばわかる。 Cocoaの日々: [iOS][Mac] CoreD

    Cocoaの日々: CoreData - マイグレーションを考慮した CoreDataManager パターン
    MuneOchi
    MuneOchi 2012/10/25
    CoreData Migration
  • Objective-Cの可変長引数: プログラミングが好き!

    プログラミング好きが、プログラミングのためのソフトウエア開発周辺の興味ある分野を勉強する記録。プログラミング言語、IT、ICT、情報処理技術、設計技法、数値計算、データベース、システム、SCM、画像処理、開発環境、ツールなどなど。 Objective-Cのメソッド中でも可変長引数を使うことは可能。ただしC言語のstdargを使うので基的な内容は同じ。 - (NSString*)stringJoin:(int)cnt withObjects:(NSString*)str,... { id array = [NSMutableArray arrayWithCapacity:cnt]; va_list argp; va_start(argp,str); [array addObject:str]; int i; for(i=0;i<cnt-1;i++) { id ival; ival = va

    MuneOchi
    MuneOchi 2012/10/16
    Objective-C 可変長引数
  • iOS でオブジェクトをシリアライズしてファイルに保存する方法 - A Day In The Life

    iOS でデータを永続化する方法の続きです。今回はシリアライズされたオブジェクトの保存方法について説明します。シリアライズされたオブジェクトはファイルで保存することが容易なためデータ永続化の際に頻繁に使用されます。 シリアライズ自体はデータの保存に限らず、Interface Builder やネットワークを使ったデータの送受信などいろいろなところで使われています。 プログラマであれば必ずおさえておきたい技術の一つです。 シリアライズって何? オブジェクトの状態をバイナリ(0と1の集まり)に変換することをオブジェクトのシリアライズまたはシリアル化といいます。逆にバイナリをオブジェクトに変換することをデシリアライズといいます。 シリアライズされたデータは iOS 上では NSData オブジェクトとしてあつかわれます。NSData オブジェクトはそのままファイルに保存することができます。 iO

    iOS でオブジェクトをシリアライズしてファイルに保存する方法 - A Day In The Life
    MuneOchi
    MuneOchi 2012/10/11
    自作クラスのオブジェクトをアーカイブしてファイルに保存する
  • ザッカーバーグの面接試験2:アクティビティ・インディケーター

    先日の「ザッカーバーグの面接試験:Objective-C のブロックを使いこなす」には数多くの答えをいただいたので、それに気を良くして第二問。これも iOS 用だが、先の問題と違い、この問題は初級者〜中級者向けだ。 [問題] iOS ではステータスバー上のアクティビティ・インディケーターの ON/OFF は、[UIApplication sharedApplication] の networkActivityIndicatorVisible プロパティに YES/NO をセットすることにより行います。そのため、複数の非同期通信を同時に行うアプリケーションの場合、少なくとも一つの非同期通信が行われている時だけ YES にする仕組みを作る必要があります。 そこで、NetworkActivityManager というシングルトン・クラス(インスタンスを一個しか持たないクラス)を作り、非同期通信中

  • iPhone カレンダーライブラリの設置- TapkuLibrary « Mac-ISV

    今日はiPhoneで有名なカレンダーライブラリ、TapkuLibraryのインストール方法を紹介します。 iPhone SDKではカレンダー機能を提供しないのでカレンダーは自分で手動で実装しなければなりません。 しかしゼロからカレンダーを作るという事はかなりの時間を要しデザイン及び機能追加など一筋縄では行かないと思います。 そこでネット上で公開されているTapkuLibrary というナイスなフレームワークを紹介します。 かなりキレイなUIを提供しています。 しかしインストール説明文が英語になっており間違っている所もありインストール手順も複雑だったため自分の経験を皆様と共有したいと思います。 インストール手順 1. TapkuLibraryをローカルに落とす。 まずダウンロードするにはGITクライアントが必要です。 $mkdir TapkuLibrary $cd TapkuLibra

  • 永久保存版!iPhoneアプリ開発に必ず役立つ!Objective-c Tipsまとめ! | PLUS

    これまでに私自身が実際に試して実践してきた、iPhoneアプリ開発に関するTips集を一覧でまとめました。小粒の小技集が多いですけど、iPhoneアプリを開発する際の手助けになれば幸いです。 [Tips]UINaviga … 続きを読む →

  • iOSアプリ開発のメモリ管理で気をつけること - A Day In The Life

    Objective-C での開発にだいぶ慣れてきたのですが、いまだメモリ管理まわりでハマることが多いのでまとめてみました。 メモリを確保してから解放するまでの流れ メモリを確保してから解放するまでの流れは以下の図のようになります(図はアップルのサイトから引用)。 alloc または init すると参照カウントが1になります alloc または init 系メソッドを呼ぶと参照カウントが1になります。 このように書いたのは、クラスの仕様によって alloc メソッドで retainCount が1になるオブジェクトと init 系のメソッドで retainCount が1になるオブジェクトがあるためです。alloc と init はセットで呼ばれることがほとんどなのでこの違いが問題になることはないと思いますが念のため。 int main() { /* allocで参照カウント1 */ NS

    MuneOchi
    MuneOchi 2012/03/10
    memory management NSTimer
  • そのUI, まずはCocoa Controlsで探してみよう - プログラミングノート

    iOS Advent Calendar 9日目担当のntakuです。 もし、iOS開発する上で一番大変なことはなんですか?と聞かれれば間違いなくUIの開発!と答えます。同じ価値や機能を提供するにしても、使っていて気持ちが良いUIであるかどうかでアプリの評価は大きく変わってくると思います。 何がベストなのか、はやはり実際にプロトタイプを作ってみないと分からないわけですが、あのアプリのUIをちょっと真似してみようと思ったり、このアプリと同じように作ってくださいと言われるとそれだけで数日かかってしまうこともざらにあります。 そんなことを繰り返していると中々アプリが完成しないわけなのですが、その期間を少しでも短縮するために、私が開発する際に活用しているのがCocoa Controlsというサイトです。 Cocoa Controls Cocoa ControlsはiOSやMax OS X開発者が開発

    そのUI, まずはCocoa Controlsで探してみよう - プログラミングノート
  • Ustream.tv: ユーザー sazameki: [Sazameki] iOS 5プログラミング 2012/01/07 13:02, [Sazameki] iOS 5プログラミング 2012/01/07 13:02. コンピュータ...

    [Sazameki] iOS 5プログラミング 2012/01/07 13:02 484 視聴数 長さ: 94:27 [Sazameki] iOS 5プログラミング 2012/01/07 13:02 埋め込みコード:録画 <iframe src="http://www.ustream.tv/embed/recorded/19617376" width="608" height="368" scrolling="no" frameborder="0" style="border: 0px none transparent;"></iframe> カスタム: 横幅: px 高さ: px 古いエンベッドコードを使う <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="296"

  • Objective-C がこの四年間でどれぐらい進化したのか一目でわかるテストケース

    Twitterに流したら思ったよりも好評でしたので、ブログにも上げておきます。 こちらがiOS 2地点でのNSURLConnectionクラスを使った非同期通信のテストケース。 こちらがiOS 5でのNSURLConnectionクラスを使った非同期通信のテストケース。 Blocksはやっぱり偉大です。一つしかテストケースがないうちはまだマシなのですが、これが10個とかになると楽さが全く違ってきます。ぜひためしにURLだけ変えて同じテストケースを10個作ってみてください。iOS 5のBlocksを使ったコードはほとんどコピペだけで終わりますが、iOS 2でのdelegateを使ったコードは他にも変更しなければならない点が多数出てくるはずです。 また実際にこのコードを走らせてみると、理由はよくわからないのですがiOS 5で追加されたAPIを使ったコード(Blocks)のほうがそうでないコード

    MuneOchi
    MuneOchi 2012/02/06
    blocks
  • Objective-Cでの真偽値型 - ちくわプログラマにっき

    BOOL bool Boolean Objective-C内で使える真偽値型として次の3つがあるのだけど、どれを使うのが正しいのかよくわからない。 実は型だけではなく値の方もいくつかある。 true TRUE YES こうなると、boolにYESを入れればいいのか、BOOLにtrueを入れればいいのかもうなんだかよくわかんなくなっちゃったので簡単にまとめてみた。 BOOL Objective-C 標準の真偽値型(なのかな) 真 YES 値は1 偽 NO 値は0 /* objc.h */ ... typedef signed char BOOL; // BOOL is explicitly signed so @encode(BOOL) == "c" rather than "C" // even if -funsigned-char is used. #define OBJC_BOOL_D

    Objective-Cでの真偽値型 - ちくわプログラマにっき
    MuneOchi
    MuneOchi 2012/02/02
    Objective-CではBOOL,YES,NO を使うのが標準らしい