タグ

iOSとiosに関するabetomotomoのブックマーク (172)

  • ダイナミックObjective-C(102) プロパティ(2) - プロパティの宣言

    プロパティの話を続けよう。今回は、プロパティを宣言するための文法を調べてみる。 プロパティの目的 まず、プロパティの目的を明確にしておこう。プロパティとは、「クラスにアクセッサメソッドを簡単に付加する」ために導入されたものだ。 以前であれば、クラスが持つインスタンス変数に安全にアクセスさせるには、アクセッサメソッドを手動で追加する必要があった。これを自動化してやろう、というのがプロパティの目的だ。 ここで注意しておきたいのは、プロパティを使うとそのアクセスではメソッド呼び出しが発生する、というところだろう。前回、Objective-Cではほぼ自由にインスタンス変数にアクセスできるということを紹介した。プロパティではこれらの手段は使わずに、適切なメソッドを提供することになる。 この手法の利点は、安全であるということだ。とくにObjective-C特有の、retainやreleaseを伴ったオ

    ダイナミックObjective-C(102) プロパティ(2) - プロパティの宣言
    abetomotomo
    abetomotomo 2012/03/03
    プロパティ
  • Objective-Cの @property と @synthesize の組み合わせが何をやっているのかを解説 - 強火で進め

    改めて説明するまでも無いかと思ってたけど意外と知らない人は知らないみたいので解説を書いておきます。 @property と @synthesize の組み合わせは端的に言うと「setterとgetter(アクセッサメソッド)をコンパイルの前に生成させる」以上。 ※Objective-Cの場合、 @ で始まるものはプログラムでは無く、コンパイラへの指示となります。この様な指示をObjective-Cではコンパイラディレクティブ(Compiler directive)と呼びます。 詳細説明 setterやgetterはメンバ変数を直接扱わずにメソッド経由で代入やデータの取得をする為に定義するメソッドです。setterがデータを代入する時のメソッド、getterがデータを取得する時のメソッドとなります。 メンバ変数をメソッド経由にすることにより代入前にチェックを行って有効な値のときのみメンバ変数

    abetomotomo
    abetomotomo 2012/03/03
    プロパティ
  • Objective-Cでのプロパティ宣言と実装 « TORQUES LABS

    iPhoneアプリを開発していて、Objective-Cを普通に使っているのですが、慣れないコードを書こうとすると、作業が止まってしまうことが多い。 これは細かいところの言語仕様を完全に把握しているわけではないのが原因で、1日くらいiPhone SDK抜きでObjective-Cでいろいろクラスを書いてみて仕様をしっかり覚えればいい、というのは頭では分かっているのですが他の仕事でいろいろな言語を渡り歩いているのもあり、なかなか一度しっかりと勉強する時間が取れない。 で、そんな自分の為にすぐにコピペできるようにコードのメモです。 プロパティの書き方 というわけで、Objective-Cでのプロパティの書き方メモ。 // Hoge.h @interface Hoge: NSObject{ // 以下のように内部変数を作っておく。 int testInt; int testInt2; NSStr

    abetomotomo
    abetomotomo 2012/03/03
    プロパティ
  • iOS で XML をパースする

    iOS で使える XML パーサーは色々あります。 iOS 標準で使えるものは以下の2点 Cocoa Touch フレームワークで提供されている NSXMLParser C言語のライブラリである libxml2 を直接利用 外部のライブラリでは主に以下のようなものがあります。 GDataXML KissXML TBXML XML パーサーの中でも SAX と呼ばれる少し扱いにくいが比較的高速で省メモリなもの。DOM と呼ばれる扱いやすいがメモリを多く消費しやすいものがあります。 今回は Cocoa Touch フレームワークで提供されている NSXMLParser の使い方を紹介します。 NSXMLParser は SAX タイプのパーサーで C言語のライブラリである libxml2 をラップしたクラスになります。XML パースのおおまかな流れは、インスタンスを初期化 → デリゲートを設定

    iOS で XML をパースする
    abetomotomo
    abetomotomo 2012/03/02
    xmlパース
  • XMLを解析したい - ちくわプログラマにっき

    iPhoneで利用できるXMLパーサにはいくつかありますが今回はiPhoneSDKに標準添付されているNSXMLParserを利用します。 ちなみに、NSXMLParser以外のXMLパーサには以下のようなものがあります。NSXMLParserはSAXベースのパーサなのに対し、TouchXMLやKissXMLはDOMベースのパーサとなります。SAXベースのXML解析はDOMベースと比較すると簡単とは言い難いので、よほど大きなXMLデータをあつかったりしない限りはこれらDOMベースのパーサを利用するのがいいかも。 TouchXML http://code.google.com/p/touchcode/ KissXML http://code.google.com/p/kissxml/ NSMLParserでXMLを解析する手順は以下の通りです。 XMLデータを用意する まずはXMLデータを用

    XMLを解析したい - ちくわプログラマにっき
    abetomotomo
    abetomotomo 2012/03/02
    xmlパース
  • Objective-C + Cocoaにおけるメモリ管理について

    #import <foundation /foundation.h> #import "MyObject.h" int main (int argc, const char * argv[]) { // (4) NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; // (5) MyObject* object1; object1 = [[MyObject alloc] init]; [object1 release]; // (6) MyObject* object2; object2 = [[[MyObject alloc] init] autorelease]; // (7) NSString* string0; string0 = [NSString stringWithCString:"new string"

  • メモリ管理を理解する(前編)

    クラスのインスタンス変数の所有権 あるクラスが、インスタンス変数として別のクラスのインスタンスを保持する場合があります。このときにも、オブジェクトの所有権について考慮しておく必要があります。 インスタンス変数という「容れ物」にオブジェクトを保存するとき、これが勝手に消えてしまわないように所有権を確保しておくのです。 第3回「Objective-Cのクラス定義を理解しよう」で触れたように、クラスのインスタンス変数にはアクセサというメソッドを通してアクセスします。 インスタンス変数に何らかのオブジェクトをセットするアクセサはセッターメソッドと呼ばれます。オブジェクトの所有権は、このセッターメソッドで確保すればよいことになります。 次のサンプルを見てみましょう。 01 #import <Foundation/Foundation.h> 02 03 @interface MyClass : NSO

    メモリ管理を理解する(前編)
  • Blogger

    Google のウェブログ公開ツールを使って、テキスト、写真、動画を共有できます。

  • releaseの使いどころ : As Sloth As Possible

    俺もメモリ管理を間違えて頻繁にアプリを落としてしまうゆとりプログラマなのであんまり偉そうなことも言えないのだけど、「releaseの使いどころ。メモリの辺りがどうしてもわからない。」を読んでいくつか思ったところがあるので書いときます。 「何度もinit」はしない 既に確保されているハズの変数を二度initするのはメモリリークだよね? 解放されている変数は、 if (obj == nil) では判別できないのだろうか。 ボタン押下時などに、同じロジックを走ることが多くて、何度もinitをしてしまうことが多いのだが。。。。 具体的なコードを見てないので間違ってるかもだけど、多分これ「何度もinitしちゃう」じゃなくて「開放してないオブジェクトを参照してる変数に、何度も新しいオブジェクトをつっこんじゃう」ってことだと思って話を進める(そうすると、どこからも参照が辿れないのにメモリが開放されてない

    releaseの使いどころ : As Sloth As Possible
    abetomotomo
    abetomotomo 2012/03/02
    メモリ 開放
  • URLエンコード・デコード&HTMLエスケープ・アンエスケープ | らいふログ

    #import <Foundation/Foundation.h> @interface NSString (Escape) - (NSString *)urlEncode; - (NSString *)urlDecode; - (NSString *)escapeHtml; - (NSString *)unescapeHtml; @end #import "NSString+Escape.h" @implementation NSString (Escape) - (NSString *)escapeHtml { NSMutableString *string = [[self mutableCopy] autorelease]; [string replaceOccurrencesOfString:@"&" withString:@"&" options:NSLiteralSearch

  • はっそうし objective-c

  • 手探りiPhoneSDKの日々 JavaプログラマのためのObjective-C Vol.02

    今日の東京は肌寒い1日でした。 そろそろ秋ですね、早いものです。 今回はメソッドの定義とその呼出について。 引数を持たないメソッドの定義。 ・Javaのメソッド(引数なし)定義 public class MyClass { // 引数なし・戻り値なし void doMethod1() { } // 引数なし・戻り値あり String doMethod2() { return "hoge"; } // スタティックメソッド static void doMethod3() { } }