<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>memo.393 &#187; Objective-C</title>
	<atom:link href="http://memo.393.bz/archives/tag/objective-c/feed" rel="self" type="application/rss+xml" />
	<link>http://memo.393.bz</link>
	<description>個人的メモです。間違いなどありましたらご指摘ください。。。</description>
	<lastBuildDate>Sun, 27 Nov 2011 15:27:41 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[iPhone]UISliderにてvalue値固定でmaximumValueを変更した際にはUISliderの見た目が変化しないみたい。そんなときの無理やりな対処の仕方。</title>
		<link>http://memo.393.bz/archives/1611</link>
		<comments>http://memo.393.bz/archives/1611#comments</comments>
		<pubDate>Thu, 18 Aug 2011 04:08:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1611</guid>
		<description><![CDATA[UISliderの挙動に悩みました。 やりたかったこと。 たとえば、UISliderが二つあって(sliderA,sliderBとする)、 初期値はこんな感じで、 sliderA.maximumValue = 200;  [...]]]></description>
			<content:encoded><![CDATA[<p>UISliderの挙動に悩みました。</p>
<p>やりたかったこと。<br />
たとえば、UISliderが二つあって(sliderA,sliderBとする)、<br />
初期値はこんな感じで、</p>
<pre name="code" class="c">

sliderA.maximumValue = 200;
sliderA.minimumValue = 100;
sliderA.value = 150;
sliderB.maximumValue = 100;
sliderA.minimumValue = 0;
sliderA.value = 50;
[
</pre>
<p>sliderAのvalue値をsliderBのmaximumValueに対応させたい</p>
<pre name="code" class="c">

//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
}
</pre>
<p>sliderBはmaximumValueは変化するがvalueは変化しない。<br />
この状態でsliderBの見た目(つまみの位置)が相対的に変化して欲しい。<br />
が、変化しない。。</p>
<p>sliderBのvalueを変数で保持しておいて、明示的にsilderB.valueに代入してみてもだめ。</p>
<pre name="code" class="as">

float sliderBValue;
//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
    sliderB.value = _sliderBValue;
}
//sliderBに対するValue changedなメソッド
-(IBAction) changeSliderBValue:(UISlider* )slider
{
    _sliderBValue = sliderB.value;
}
</pre>
<p>どうも挙動を確認してみるとslider.valueには現在地と同じ値を明示的に代入しても見た目の変化は起きないようだった。<br />
現在地と違う値を入れてあげれば、maximumValueに対応した見た目の変化も発生する。</p>
<p>で、考えた苦肉の策はこちら</p>
<pre name="code" class="as">

float sliderBValue;
//sliderAに対するValue changedなメソッド
-(IBAction) changeSliderAValue:(UISlider* )slider
{
    sliderB.maximumValue= sliderA.value;
    //わざとランダムな数値を一度代入することで現在値を更新する
   sliderB.value =  arc4random() % 100;
    //改めて_sliderBValueを代入することで正しい見た目にする
    sliderB.value = _sliderBValue;
}
//sliderBに対するValue changedなメソッド
-(IBAction) changeSliderBValue:(UISlider* )slider
{
    _sliderBValue = sliderB.value;
}
</pre>
<p>もっといい方法がありましたら、教えてくださいませ。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1611/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]UISliderのつまみ(thumb)を独自の画像に変更するときの注意</title>
		<link>http://memo.393.bz/archives/1556</link>
		<comments>http://memo.393.bz/archives/1556#comments</comments>
		<pubDate>Thu, 09 Jun 2011 08:55:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1556</guid>
		<description><![CDATA[簡単にできたようで出来てなくてちょっとはまったのでメモ 基本的にはメソッドが用意されます。 //setThumbImage //使用例 //speedLevelSliderというUISliderが宣言してあって、Reso [...]]]></description>
			<content:encoded><![CDATA[<p>簡単にできたようで出来てなくてちょっとはまったのでメモ</p>
<p>基本的にはメソッドが用意されます。</p>
<pre name="code" class="c">

//setThumbImage
//使用例
//speedLevelSliderというUISliderが宣言してあって、Resourceに&quot;sliderThumb.pngがあるとして
//sliderThumb.pngはwidth:100px,height:100pxとする
//通常状態
[speedLevelSlider setThumbImage:[UIImage imageNamed:@&quot;sliderThumb.png&quot;] forState:UIControlStateNormal];
//つまみをタッチ状態も登録しておかないとデフォルトが表示されちゃう
[speedLevelSlider setThumbImage:[UIImage imageNamed:@&quot;sliderThumb2.png&quot;] forState:UIControlStateHighlighted];
</pre>
<p>これだけで指定した画像につまみが変更される。<br />
が、UISliderをInterfaceBuilderで配置した場合にはこれだけではうまくいかない場合がある。<br />
デフォルトのUISliderのheightは23になるのだけど、自分で用意したつまみ画像の高さが23を超える場合は、はみ出した部分はタッチ領域にならない。<br />
上記の例だとつまみの高さは100pxなので見た目はでかいつまみになっているけど、実機でタッチできる領域は中心の23px分しか反応しないことになる。<br />
InterfaceBuilder上からheightを修正してあげればいいかと思うと、Hの領域だけグレイアウトされていて修正ができない.</p>
<p>なのでframeプロパティを修正して描画領域を書き換えてあげないといけないのでした。</p>
<pre name="code" class="c">

//変更前
//Sliderのx,y座標やwidthはInterfaceBuilderから確認
speedLevelSlider.frame = CGRectMake( 10, 200, 200, 23);
//変更後
//(実際は左上基準なので、つまみが大きくなった分、ｙ座標も修正する必要あります）
speedLevelSlider.frame = CGRectMake( 10, 200, 200, 100);
</pre>
<p>/////////////////////////////////////////////////////////////////////////////////////////////////////////<br />
というようなことが下記のブログには、しっかり書かれていましたのですが、、<br />
<a href=" http://imalog.giftarts.net/?eid=191">スライダーバー（UISlider）のカスタマイズ的:いまログ</a><br />
細かいところが理解できずに結構はまってしまった。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1556/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]Objective- Cの勉強メモ:xibファイルとはどういうものなのか</title>
		<link>http://memo.393.bz/archives/1205</link>
		<comments>http://memo.393.bz/archives/1205#comments</comments>
		<pubDate>Mon, 21 Jun 2010 01:14:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1205</guid>
		<description><![CDATA[・xibファイルとは、 XML Interface Builderの略。 その名の通り、xml形式のファイル。 これをxcodeから開くとInterfaceBuilder(アプリケーション：以下IB)が立ち上がってビジュ [...]]]></description>
			<content:encoded><![CDATA[<p><strong>・xibファイルとは、</strong><br />
XML Interface Builderの略。<br />
その名の通り、xml形式のファイル。<br />
これをxcodeから開くとInterfaceBuilder(アプリケーション：以下IB)が立ち上がってビジュアル的にxmlの中身を編集できる。<br />
(ということだと思う)</p>
<p><strong>・Flashでいったらxibファイルって何にあたるの？</strong><br />
とTwitterでつぶやいたら、<br />
エライ人から「FLEXでいうところのMXMLみたいなもの」と教えてもらった。<br />
なるほど、FLEXでもMXMLも表示オブジェクトの配置情報を持っているし、MXMLを使わなくてもASで表示オブジェクトの配置することもできる。<br />
（でもMXMLも使い方をよくわかってない)</p>
<p>ちょっと調べてみようと思ったらかなり分かりやすい素敵記事発見。</p>
<p><a href="http://shibuym.blogspot.com/2009/09/iphonexibnib1.html" target="_brank">iPhone:Xib/Nib ファイル(その1)：「支出管理」サポート </a><br />
<a href="http://shibuym.blogspot.com/2009/09/iphonexibnib2-nib.html" target="_brank">iPhone:Xib/Nib ファイル(その2) ：「支出管理」サポート </a></p>
<p>xibファイルは、UIApplicationかUIViewControllerのサブクラスによってロードされるものなのね。<br />
どのクラスにも設定できちゃうから、この辺りの仕組みがよくわからなかった。<br />
ありがたやありがたや。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1205/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone] Objective- Cの勉強メモ:Xcodeショートカット：ヘッダーファイルとソースファイルの切り替え</title>
		<link>http://memo.393.bz/archives/1201</link>
		<comments>http://memo.393.bz/archives/1201#comments</comments>
		<pubDate>Sun, 13 Jun 2010 03:00:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1201</guid>
		<description><![CDATA[.h/.mファイルの切り替え cmd + option + 上キー（交互に切り替わる)]]></description>
			<content:encoded><![CDATA[<p>.h/.mファイルの切り替え<br />
cmd + option + 上キー（交互に切り替わる)</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1201/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone] Objective- Cの勉強メモ：NSNotificationCenterでイベント通知の管理</title>
		<link>http://memo.393.bz/archives/1187</link>
		<comments>http://memo.393.bz/archives/1187#comments</comments>
		<pubDate>Wed, 09 Jun 2010 14:10:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1187</guid>
		<description><![CDATA[Objective-CはASと違ってデリゲートとという機能がある。 デリゲートとは別に色んなクラスが通知するイベントを一括で管理してくれるクラスがあるみたい。 それが、NSNotificationCenterクラス。 手 [...]]]></description>
			<content:encoded><![CDATA[<p>Objective-CはASと違って<a href="http://memo.393.bz/archives/1122">デリゲート</a>とという機能がある。<br />
デリゲートとは別に色んなクラスが通知するイベントを一括で管理してくれるクラスがあるみたい。<br />
それが、NSNotificationCenterクラス。</p>
<p>手順としては、<br />
1.NSNotificationCenterのインスタンスを生成<br />
2.通知の登録(インスタンスに通知先、リスナー関数、通知の種類、通知の送信元)<br />
3.通知の開始<br />
4.(通知の終了)<br />
5:(通知の登録解除)</p>
<p>例)</p>
<pre name="code" class="c">

//playerはMPMusicPlayerControllerのインスタンス

//通知センタのインスタンを取得
NSNotificationCenter* noteCenter = [NSNotificationCenter defaultCenter];
//addObserver:通知先
//selector:リスナー関数
//name:通知してほしい通知の種類？
//object:通知の送信元
[noteCenter
addObserver:self
selector:@selector(hoge:)
name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification
object:player];
//通知開始を指示
[player beginGeneratingPlaybackNotifications];
</pre>
<p>nameはnilにすると全ての種類のイベントが取得対象になる。<br />
(そもそも通知の送信元がどのようなイベントを発信してるかを把握してる必要あり？)<br />
(ドキュメントみれば書いてあるのかな？）<br />
objectはnilにすると、全ての送信元からイベントを受け取る。</p>
<p>あとNSNotificationCenterはシングルトンになるので、インスタンス変数の保持はしなくてもいいみたい。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1187/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone] Objective- Cの勉強メモ：カテゴリという概念を使って元クラスの拡張(メソッドの追加)できる</title>
		<link>http://memo.393.bz/archives/1182</link>
		<comments>http://memo.393.bz/archives/1182#comments</comments>
		<pubDate>Wed, 09 Jun 2010 13:41:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1182</guid>
		<description><![CDATA[Objective-CにはASにはない機能でカテゴリという概念がある。 これはクラスファイルにメソッドを追加することができる機能。 通常クラスを拡張するにはそのクラスを継承したサブクラスを定義すればいいと思う。 でも根本 [...]]]></description>
			<content:encoded><![CDATA[<p>Objective-CにはASにはない機能でカテゴリという概念がある。<br />
これはクラスファイルにメソッドを追加することができる機能。</p>
<p>通常クラスを拡張するにはそのクラスを継承したサブクラスを定義すればいいと思う。<br />
でも根本的に弄りたくなった場合、元のクラスを書き換えちゃうということもできる。<br />
(ASだと、Flash8でAS2のときは直接編集できたけど、AS3ではSWCになってるから無理ぽ）<br />
でも書き換えちゃうと何か不具合がおきたときとかバックアップとってないと元に戻すのが大変。</p>
<p>というわけでカテゴリという概念は、元クラスを簡易的に拡張できるという概念。<br />
ただし追加できるのはメソッドだけ。<br />
変数は追加できない。<br />
手順は拡張用のクラス（？）ファイルを作ってそこで定義する。</p>
<p>例）UIViewを拡張する、UIViewExファイルを生成する場合<br />
//ヘッダーファイル</p>
<pre name="code" class="c">

#import &lt;UIKit/UIKit.h&gt;
//ここでの()の中の名前は任意(ファイル名と同じでなくてよい)
@interface UIView (AnimationExtension)
//メソッドの定義
//ここに追加したいメソッドを書く
-(void) hoge;
@end
</pre>
<p>//実行ファイル</p>
<pre name="code" class="c">

#import &quot;UIViewExtention.h&quot;
@implementation UIView(AnimationExtension)
//メソッドの実装
    //ここで定義したメソッドを実装する
 -(void) hoge{
    //処理
}
@end
</pre>
<p>書き方で注意するのは、ヘッダーファイルでのinterfaceのくだり。<br />
変数は定義できないので、｛｝は書く必要なし。</p>
<p>これを反映されるには、反映させたいクラスファイルにて</p>
<pre name="code" class="c">

#import &quot;UIViewExtention.h&quot;
</pre>
<p>を記述すればよい。<br />
これが記述されたクラス内では、UIViewインスタンスにUIViewExで追加したメソッドが普通に使えるようになる。</p>
<p>//例</p>
<pre name="code" class="c">

-(void) init{
//imageViewはUIImageVIewクラスのインスタンス
//(UIImageViewのスーパークラスはUIImageなのでhogeメソッドが使える)
[imageView hoge];
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1182/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]Objective- Cの勉強メモ：乱数の取り扱い</title>
		<link>http://memo.393.bz/archives/1170</link>
		<comments>http://memo.393.bz/archives/1170#comments</comments>
		<pubDate>Thu, 03 Jun 2010 17:27:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1170</guid>
		<description><![CDATA[まずはObjective-CというかC言語での乱数の発生させる方法。 使える関数は2種類 まず int rand(void); という関数でint型の乱数を返すことができる。 このときに返る値は、0～馬鹿でかい数という感 [...]]]></description>
			<content:encoded><![CDATA[<p>まずはObjective-CというかC言語での乱数の発生させる方法。<br />
使える関数は2種類<br />
まず<br />
int rand(void);<br />
という関数でint型の乱数を返すことができる。<br />
このときに返る値は、0～馬鹿でかい数という感じ。<br />
馬鹿でかい数はコンパイラによって変わるらしい。<br />
(ASのMath.random()のように、0～1未満というわけでない)</p>
<pre name="code" class="c">

int i;
i = rand();
printf(%d,i);//0から馬鹿でかい数の間の間
</pre>
<p>ただ、このままだと乱数は実行するたびに常に同じ値を返すことになるので、初期化処理という行為が必要になる。<br />
そこで使うのがsrand();<br />
void srand(unsigned int 初期値);</p>
<p>使い方としては、rand()関数を実行する前にsrand()関数を実行することで初期化すればよし。<br />
初期値には、絶対にかぶらない値を日付データから取ればよし。</p>
<pre name="code" class="c">

//time(NULL)で現在の時刻が1970年1月1日午前0時0分0秒からの通算秒数で得られる。
srand(time(NULL));
rand();
</pre>
<p>以上が、C言語での設定方法</p>
<p>Objective-Cではsrandは以下のようにするらしい。</p>
<pre name="code" class="c">

//NSDateインスタンスを作って、本日の日付けを秒数に換算してる
srand([[NSDate date] timeIntervalSinceReferenceDate]);
rand()
</pre>
<p>※C言語のやり方でも問題なさげ。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1170/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[iPhone]Objective- Cの勉強メモ：プロパティ宣言：@propertyの意味</title>
		<link>http://memo.393.bz/archives/1149</link>
		<comments>http://memo.393.bz/archives/1149#comments</comments>
		<pubDate>Sat, 22 May 2010 00:41:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1149</guid>
		<description><![CDATA[ヘッダーファイルにて、プロパティ宣言をすることでそのプロパティについてのゲッターセッターが実装される。 プロパティ宣言をしなくても、自分で実装処理を書いてもよい プロパティの書式は、 //ヘッダーファイルに書く //@p [...]]]></description>
			<content:encoded><![CDATA[<p>ヘッダーファイルにて、プロパティ宣言をすることでそのプロパティについてのゲッターセッターが実装される。<br />
プロパティ宣言をしなくても、自分で実装処理を書いてもよい</p>
<p>プロパティの書式は、</p>
<pre name="code" class="c">

//ヘッダーファイルに書く
//@property (属性 , 属性, ･･･)　データ型, 名前
//例
@property ( nonatomic, retain ) NSTimeZone* timeZone;

//ソースファイルに書く
@synthesize timeZone;
</pre>
<p>上の例を自分で実装した場合は</p>
<pre name="code" class="c">

//ソースファイルに書く
//ゲッター
-(NSTimeZone*) timeZone{
//同時実行不可のための処理：属性nonatomicに相当
@synchronized(self){
return timeZone;
}
}
//セッター：読み書きについて属性が未設定なのでセッターまで生成される
-(void) setTimeZone:(NSTimeZone *)zone{
//同時実行不可のための処理：属性nonatomicに相当
@synchronized(self){
if(timeZone != zone){
[timeZone release];
timeZone = [zone retain];//保持する際は保持カウントをアップさせる：属性retainに相当
}
}
}
</pre>
<p>※@synchronizedは排他制御するかしないか。<br />
マルチスレッドで同時に実行して欲しくない処理があるとき、これを指定することで片方のスレッドを停止することができる。<br />
上の例では排他制御に対応しており、プロパティの属性でnonatomicを指定すると、排他制御はしなくなる。</p>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1149/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]Objective-Cの勉強メモ：dealloc</title>
		<link>http://memo.393.bz/archives/1143</link>
		<comments>http://memo.393.bz/archives/1143#comments</comments>
		<pubDate>Fri, 21 May 2010 12:33:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1143</guid>
		<description><![CDATA[クラスファイルの最後の方にやたら登場するdeallocメソッド NSObjectのメソッドで、それをオーバーライドしている。 dealloc実行のタイミングは保持カウントが0になったときに実行される。 保持カウントはイン [...]]]></description>
			<content:encoded><![CDATA[<p>クラスファイルの最後の方にやたら登場するdeallocメソッド<br />
NSObjectのメソッドで、それをオーバーライドしている。<br />
dealloc実行のタイミングは保持カウントが0になったときに実行される。</p>
<p>保持カウントはインスタンスの生成、retainさせた参照の追加でカウントアップ。<br />
releaseでカウントダウンされるのでカウント数には注意が必要。</p>
<p>例)</p>
<pre name="code" class="c">

- (void)dealloc {
    [window release];
//スーパークラス(NSObject)のdeallocを実行することで実際のメモリの破棄
//C言語のfree関数のようなもの
    [super dealloc];
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1143/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[iPhone]Objective-Cの勉強メモ(ActionScriptとの比較的な)：プロトコル</title>
		<link>http://memo.393.bz/archives/1137</link>
		<comments>http://memo.393.bz/archives/1137#comments</comments>
		<pubDate>Thu, 20 May 2010 15:52:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Objective-C]]></category>

		<guid isPermaLink="false">http://memo.393.bz/?p=1137</guid>
		<description><![CDATA[Objective-Cにはプロトコルという概念がある。 ActionScriptでいうところのInterfaceみたいなものらしい。 記述はヘッダーファイルでのクラスの定義のところに書く @interface クラス名  [...]]]></description>
			<content:encoded><![CDATA[<p>Objective-Cにはプロトコルという概念がある。<br />
ActionScriptでいうところのInterfaceみたいなものらしい。<br />
記述はヘッダーファイルでのクラスの定義のところに書く</p>
<pre name="code" class="c">

@interface クラス名 : スーパークラス名 &lt;プロトコル名&gt;
//例
@interface ClockAppDelegate : NSObject &lt;UIApplicati&gt; {
</pre>
<p>プロトコルはデリゲートとも関わりがある。<br />
たとえば、あるAクラスのデリゲート対象とされたＢクラスはAクラスのプロトコルを記述しないとWarningになる。</p>
<pre name="code" class="c">

//例)
//UIWebViewクラスのインスタンス(ｗｅｂView)が現在のクラス(self)にデリゲートされてる
webView.delegate = self;
//このwebViewを持ったクラスはヘッダーファイルにUIWebViewDelegateプロトコルを追加しなくてはならない。
//例
@interface WebAppDelegate : NSObject &lt;UIApplicationDelegate,UIWebViewDelegate&gt; {}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://memo.393.bz/archives/1137/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

