タグ

objective-cに関するNSTanechanのブックマーク (35)

  • カテゴリーとクラスエクステンション - Toyship.org

    カテゴリーとクラスエクステンションは、Objective-Cで使えるクラス拡張の方法です。 既存のクラスにメソッドを追加したりクラスの分割をしたりすることができるので、中級以上のObjective-Cユーザーには必須の機能です。 カテゴリーによるメソッド追加 カテゴリーを使うと、既存のクラスにメソッドを追加することができます。 自分でつくったクラスにメソッド追加することもできますし、システムのフレームワークの中のクラスに追加することもできます。 例えば、NSStringクラスに二つの新しいメソッドを付け加えた例を見てみましょう。 まず、追加メソッドのヘッダーファイルはこうなります。 // NSString+ToyshipMode.h @interface NSString (ToyshipMode) + (void)ToyshipMode1; - (void)ToyshipMode2; @

    カテゴリーとクラスエクステンション - Toyship.org
  • 日付フォーマット yyyy と YYYY の違い - 強火で進め

    結論 まず最初に急いでる人向けに結論を先に書いておきます。2つの違いは以下の様に成っています。 yyyy 年(西暦)を出力 YYYY ある年における「最初の木曜日を含む週が、その年の第1週である」というルールで年(西暦)を出力。 例えば 2015/1/1 は木曜日なのでその週の日は日曜日〜土曜日まで全て2015年の第1週という解釈になります。この場合には2014年で有る、 2014/12/28(日曜)〜2014/12/31(水曜) の時でも YYYY では 2015 を返します。 きっかけ Podcast で Rebuild の第73回を聴いていたら日付フォーマットで yyyy ではなく、YYYY を使った為に TwitterAndroid クライアントで不具合が出たという話が出てきました。 ※根的な原因はこのルールでサーバ側が実装されていた為、 Android クライアントで正し

    日付フォーマット yyyy と YYYY の違い - 強火で進め
  • KVOのメソッドの憶え方 - Qiita

    KVOはたまに使うのでいつもメソッドを忘れてしまう。リファレンスや技術サイトを検索してもKVOについての技術側面の説明が多くメソッドを素早く思い出したいときのサイトがないので、そのメモ。 念のため、Xcodeのスニペットに登録できるように変数部分をテンプレート化している。 監視の登録と解除 登録 //KVOの登録 [<#監視対象#> addObserver:<#監視するオブザーバ#> forKeyPath:<#監視対象のプロパティ名#> options:<#監視するデータにどのような物を含めるか#> context:<#任意のインスタンス#>];

    KVOのメソッドの憶え方 - Qiita
  • [Objective-C] KeyValueObserve(キー値監視)メモ - Qiita

    Cocoaフレームワークには、KVOと呼ばれるオブザーバの機能を標準で擁しています。 基的な考え方は、KVO用に作られたメソッドを経由してプロパティを操作することで、適切にその変化をオブザーバに通知する、という仕組みです。 KVOに準拠するためにはプロパティのアクセサメソッドを適切に設定しないとなりませんが、通常のプロパティを使っている場合は特に問題なく準拠できていることになります。 KVOの登録 とあるプロパティの値の変化を監視する場合。 // HogeClassのインスタンスを生成。`fuga`というプロパティを持っている想定 HogeClass *hoge = [[HogeClass alloc] init]; [hoge addObserver:self forKeyPath:@"fuga" options:NSKeyValueObservingOptionNew context

    [Objective-C] KeyValueObserve(キー値監視)メモ - Qiita
  • 【iOS】Objective-C→ Swift のbefore/after で気になったメモ【順次更新中】 - Qiita

    //データの追加 list.append("hoge"); //取得 var str:String = list[0]; //置換 list[0] = "test" //削除 list.removeAtIndex(0)

    【iOS】Objective-C→ Swift のbefore/after で気になったメモ【順次更新中】 - Qiita
  • UILabelに影をつける - 24/7 twenty-four seven

    UILabelに影をつけるには通常、shadowColorプロパティとshadowOffsetプロパティを設定します。 暗めの背景色で、shadowColorを白、shadowOffsetを下に1ピクセルずらすと、立体感のあるラベルになります。 label.shadowColor = [UIColor whiteColor]; label.shadowOffset = CGSizeMake(0, 1); shadowColorをグレー、shadowOffsetを縦横4ピクセルずらすと、次のようになります。 label.shadowColor = [UIColor grayColor]; label.shadowOffset = CGSizeMake(6, 6); UILabelのプロパティでは、Blur効果のついた影(境界がぼやっとした影)を設定することはできません。 影にBlurを設定す

  • [iOS] 新言語SwiftがObjective-Cよりも良いところ - Qiita

    さきほどWWDCにて新言語 Swiftが発表されました。 The Swift Programming Language (iBooks Store) で言語ガイドが公開されていたのでザッと目を通してみました。 Objecitve-Cと比較してSwiftがイケてそうなところをパッと気になったところだけ書いていってみます。 変数/定数の型推論がある Objective-Cのように明示的に型を書かなくても型を推論してくれます。 推論で問題ないケースも多いと思うのでタイプ数がかなり減らせそうですね。 ( 変数を宣言する際はvar、定数を宣言する際はletで宣言します。 ) // 型推論 var name = "Shinji Ikari" // 変数の型は推論によりString型になる var age = 14 // 変数の型は推論によりInteger型になる let height = 141.5

    [iOS] 新言語SwiftがObjective-Cよりも良いところ - Qiita
  • iOS : ボタンのラベルの外見を変える | mikamiz

    setTitleShadowColor:forState:関数の公式リファレンス 影の色を設定する場合は、titleLabel.shadowOffsetプロパティを利用して影の表示位置を指定します。 サンプルコード [ buttonA setTitleColor:[ UIColor redColor ] forState:UIControlStateNormal ]; [ buttonA setTitleShadowColor:[ UIColor grayColor ] forState:UIControlStateNormal ]; buttonA.titleLabel.shadowOffset = CGSizeMake( 1, 1 ); titleLabelプロパティを利用してフォントなどを変更する titleLabelプロパティを利用して、フォントなどの細かい表示形式を変更することが

  • Macアプリを作ろう―より良いユーザビリティの為に。 - Born Neet

    といっても、初めの50ページぐらいこそコードを打ちながら真面目にやりましたが、途中から飽きて流し読みしました。まぁその程度です。 なお、原著は既に第4版が出版されていますので、英語を読める人はCocoa Programming for Mac OS Xを購入する方が、安いし情報も新しくて良いでしょう。(当然、Kindleならもっと安いです) 環境は、Mac OS X 10.7.2、Xcode 4.2.1です。 Xcodeが入っていない人は、Mac App StoreからXcodeをダウンロードして、Install Xcodeを実行して下さい。(XcodeはDL→Installと何故か2段階になっています。) ※ バージョン4.3から、直接インストールされる構成に変更になったようです。なお、サンプルは4.3でもBuildできることを確認しています。(2012/3/6 追記) なお、Macアプ

  • Modern Objective-Cで実現するシンプルコーディングのススメ

    最近話題のシンプル&リーダブルなObjective-C “Modern Objective-C”について 一度ちゃんと調べたいと思ってたので記事にしてみました。 エントリでは、Modern Objective-Cになると何がどう嬉しいのか、 古い書き方”Legacy”と新しい書き方”Modern”の比較を通して見ていきます。 ちなみに、Modern Objective-Cの詳細については、iOS Dev Centerにて公開されている WWDC 2012の下記のセッションの資料にて詳しく説明されています。 Modern Objective-C (Patrick C Beard / Session 405) Migrating to Modern Objective-C (Session 413) また、日語情報としては下記のエントリが参考になります。 今日からライオンでも使える!XCO

    Modern Objective-Cで実現するシンプルコーディングのススメ
  • [iOS] #define enum typedef | プログラミング初心者向けObjective-C入門 « きんくまデザイン

    こんにちは。きんくまです。 今回はenum, typedef, #defineについてです。 その前に、今回説明する用に新規ヘッダーファイルをつくります。 File > New > File iOSでもOS Xのどちらでも > C and C++ > Header File を選択 Nextボタンを押してファイル名を適当にいれて保存します。 今回は KKHeader.hとしました。 そのあと、main.m からいま作ったファイルを読み込めるようにします。 #import <Foundation/Foundation.h> とかいてあるすぐしたに #import “KKHeader.h” と書きます。これで読み込めるようになります。 main.m #import <Foundation/Foundation.h> #import "KKHeader.h" int main(int argc,

  • 配列とループ処理を理解しよう

    列挙子を使ったループ オブジェクトを扱う集合クラスを効率よくループするためには、「列挙子」の仕組みが有利です。列挙子は、集合の要素に順番にアクセスするための仕組みです。Objective-Cでは、Foundationの「NSEnumerator」というクラスが列挙子の役割を果たします。 以下に、列挙子を使ったループの例を見てみましょう。 #import <Foundation/Foundation.h> int main(void) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // NSArrayをループする NSArray *array = [NSArray arrayWithObjects:@"abc", @"def", @"ghi", @"jkl", nil]; NSEnumerator *enumera

    配列とループ処理を理解しよう
  • Objective-Cのクラス定義を理解しよう

    Objective-Cのクラス定義を理解しよう:Cocoaの素、Objective-Cを知ろう(3)(1/3 ページ) iPhone用アプリケーション開発で注目を集める言語「Objective-C」。C++とは異なるC言語の拡張を目指したこの言語の基を理解しよう(編集部) 前回の「一番初めのObjective-Cプログラム」では、シンプルなサンプルプログラムに沿って、クラス定義の最低限のルールを解説しました。 今回からは、プログラムの構成要素の1つ1つをより深く掘り下げていきたいと思います。その手始めとして、まずはオブジェクト指向の中核であるクラスの定義方法について解説します。前回までの解説と多少重複する部分もありますが、クラスに含まれる構成要素について、より詳しく見ていくことにしましょう。 なお、今回のサンプルは、説明やファイル作成を簡単にするために、クラスの宣言、クラスの実装、および

    Objective-Cのクラス定義を理解しよう
  • 驚愕の事実。Objective-Cのintとlongの最大値は同じだった。

    WEBサービスのデータ設計をするときに、ID値を32bitの範囲にするか、64bitの範囲にするかというのは、結構悩みますよね。 32bitというのは、だいたい21億くらいです。ユーザーが21億人を超えることはまずないので、ユーザーIDは32bitで設計しますが、お知らせIDなどは膨大になると想定して64bitまで使えるように設計したりします。 64bitというと、MySQLではカラム定義をbigintにし、Javaではフィールドをlongで定義します。 最近は個人的に、サーバサイドをJavaで記述し、アプリのクライアントサイドをObjective-Cで記述することが多いのですが、このlongの取り扱いで大事故を起こすところでした。 Objective-Cのlongは、64bitではない これはiOSの話で、Macアプリで使うObjective-Cは違うのですが、Objective-Cのl

    驚愕の事実。Objective-Cのintとlongの最大値は同じだった。
  • Objective-C でWebSocketの通信をする(SocketRocket) - 病みつきエンジニアブログ

    今流行(?)のWebSocketちゃんですが、Objective-Cで触るための日語のサイトがあまりなかったので。 手順としては、node.js でWebSocket のサーバーを作り(not Socket.IO)、SocketRocketを使ってそのサーバーに接続します。 node.js、Objective-Cともに触ったことがある人を対象にした記事です。 WebSocketサーバーを作る Socket.IOというのがありますが、今回は使いません。というのも、Socket.IOは「ソケット通信っぽいことをするためのライブラリ」で、WebSocketで繋げないブラウザにはLong Pollingやらでソケット通信風のことをするよう、ラッピングしています。そのため、今回のようにWebSocketだけで接続する場合には適していません、というかSocketRocketが対応していません。 さて

    Objective-C でWebSocketの通信をする(SocketRocket) - 病みつきエンジニアブログ
  • MKMapKitでとにかくピンを突き立てるサンプル - Qiita

    日々、企業の思惑に右往左往している読者諸賢の皆様、こんばんは。これは、Objective-C Advent Calendar 2012の13日目の記事です。まさか、MKMapKitについての記事を出そうとしたその日の内にGoogle Maps APIが公開されるとは……こんなのってないよ、あんまりだよ。 せっかくなのでGoogle Mapsに差し替えようかと認証キーの申請はしてみましたが、まだまだ配布まで時間がかかるみたいなのでこのまま行きます。サービスという特性上、いつ使えなくなるかもわかりませんし。いずれ、Apple Mapsだって改善されるでしょうし。泣いてないですし。 フレームワークの追加 プロジェクトに、CoreLocation.frameworkとMapKit.frameworkを追加してください。 アノテーションの表示 アノテーションというのは、マップに刺さった赤いピンです。

    MKMapKitでとにかくピンを突き立てるサンプル - Qiita
  • iOS(Objective-C)で日本測地系と世界測地系の変換 - Qiita

    測地系(旧日測地系、TokyoDatum)と世界測地系(WGS84)との相互変換をObjective-C上で行う方法です。その他の空間参照系の変換も可能です。 PROJ.4を利用する 業務レベルの測量目的のアプリを作成する場合など、座標変換に極めて高い精度が要求される場合は、国土地理院が提供している日測地系と法令上の世界測地系(JGD2000)とを変換するソフトウェア、TKY2JGDなどを使用しなければなりません。 日常レベル(最大十数メートル程度の誤差が許容される)のであれば、測地系と地図投影法の相互変換が行えるオープンソースライブラリ、PROJ.4を用いることで、測地系の変換を実現することができます。 このライブラリはC言語で記述されているため、上位互換言語であるObjective-Cでそのまま動かすことができます。 簡単な導入方法 しかし自分がそうなのですが、Objectiv

    iOS(Objective-C)で日本測地系と世界測地系の変換 - Qiita
  • iOSアプリ開発をする自分が始めたばかりの頃から何度も読みなおしてる本 - Qiita

    iOSについては環境の進化が速く、書籍の内容が古くなっていることがほとんどなのですが Android開発を始めたばかりの僕が読みたかったが面白かったので自分も似たようなことを書いておきます。 詳解 Objective-C 2.0 Objective-Cのメモリ管理の仕組みであるリファレンスカウンタについて理解するために購入。現在発売中の第3版ではARCについても記載されているので最新のものを買うのが良いです。 Objective-Cの特徴であるカテゴリやプロトコル、KVOについても詳細に記載されているので何度も読み返すことになると思います。 Amazonへのリンク: 詳解 Objective-C 2.0 第3版 iOS開発におけるパターンによるオートマティズム マイナビでiPhoneアプリ開発の連載を持たれていたHMDTさんの書かれたです。 UIやメモリ管理、実際のモデル設計など盛りだ

    iOSアプリ開発をする自分が始めたばかりの頃から何度も読みなおしてる本 - Qiita
  • Cocoa Foundationクラス勉強(1)

    Cocoa Foundationクラス(等)勉強室1 文字列;NSString/NSMutableString 「文字列プログラミングガイド」も参照のこと。 Objective-C、厳密にはCocoa Touch上では文字列を必ず@"~"と記述する。 Cなら文字列は"~"だから、違いはどこにあるのだろうか。 それは、@で始まる文字列は「文字列クラスNSStringのポインタ(NSString*)だ」、ということにある。 Cの文字列は(unsigned)char *なので、「異なる」のだ。 @で始まるので、実はこれもコンパイルディレクティブである。 Cocoaでの文字列を扱うクラスは以下の2つである。 とりあえず簡単な違いを書いたが、実はこれは正確ではない。 NSStringでも文字列の結合等は出来る。 正確には、「NSStringは固定文字列のため、文字列操作の結果を別のオブジェクトに格

  • Modern Objective-Cでのシンプルなプロパティ記述方式 - Qiita

    今月からようやくModern Objective-Cに着手(かなり今さらだけど・・) 記述がかなりシンプルだとは聞いていて、情報もたくさん挙がっていたのだけど、困惑したのでメモ。メンバー変数とか@synthesizeとか宣言不要でコードがスッキリして嬉しい。基的には@propertyだけ宣言すれば良いみたい。また@properyもいままでヘッダファイルでのみ宣言していたけど、プライベートなものは実装ファイルの無名カテゴリ内に宣言すればよいみたい(パブリックプロパティは従来通りヘッダファイルに記述)。以下、プライベートプロパティを宣言する時の例。 一応、メンバー変数とか当に定義されているのか確認。 もう"Legacy" Objective-Cでは書けないな。 参考サイト 参考にさせていただいたサイトです。 Objective-Cプログラミング言語 - プロパティの宣と実装 by Appl

    Modern Objective-Cでのシンプルなプロパティ記述方式 - Qiita