【OC】一、OCに適応する

2619 ワード

前に書いたのはちょっと乱れています。
-------------------------
大体分かります
初めてoc言語を見た時 うなずいて大きい  完全にjavaと C++は違っています
入門してから簡単になりました。
例をあげる 私たちは次の種類の方法を呼び出します。
もし以前にjavaで呼び出したら このように書きます
Class OrInstance.method()
ocで書くと次のコードです。
【Class OrInstance method】
比較すると簡単です。
-------->
続いて いくつかの例を挙げる
まずJavaのコードを見てください。
example.setSize(1)
example.setSize(1,1)
上のコードはocで実現します。
[example setX:1]
[example setX:1 setY 1]
クラスを作成します
@interface Fraction : NSObject

-(void)print;

@end

@implementation Fraction

-(void)print{
	NSLog(@"  --->print");
}
    Fractionクラスの作成が完了しました。
そのうち 二つの部分があります
  @インターフェース部分 クラスとクラスを記述する方法
  @implementはデータを記述し、@interfaceで宣言する方法を実現するために使用されます。
-----
続いて@interfaceの部分のフォーマットを見ます。
@interface類名:父類名
        ここでクラスと種類の方法を説明します。
@end
フォーマットは分かりましたか   @interfaceで始まる @endで終わる
私たちは声明の方法を見た時 前にあります。この記号は+記号を使っています。
最初は-記号がこの方法を表しています。例の方法です。
最初は+記号で、この方法をクラスの方法とします。
順番は@implementです。
@implement類名
{
    //メンバー宣言        
)
//@interfaceで宣言する方法を実現するためのもの
@end
コールクラス
int main(int argc, char *argv[]) {
	@autoreleasepool {
		Fraction *mFraction = [[Fraction alloc] init];
		[mFraction print];
	}
}
上のコード ARC機構を使用した。  
ARCはiOS 5の新機能で、フルネームはARC(Automatic Reference Counting)です。簡単に言えば、コードに自動的にretain/releaseが追加され、メモリ管理のために手動で追加する必要があった参照カウントのコードが自動的にコンパイラによって完成されます。
続いて 私達は見てみます もし5.0前に どうすればいいですか
int main(int argc, char *argv[]) {
	NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
	
	Fraction *mFracton = [[Fraction alloc] init];
	NSLog(@"alloc      %d",[mFracton retainCount]);
	[mFracton retain];
	NSLog(@"retain      %d",[mFracton retainCount]);
	[mFracton print];
	
	[mFracton release];
	NSLog(@"release      %d",[mFracton retainCount]);
	
	mFracton = nil;
	NSLog(@"  nil      %d",[mFracton retainCount]);
	
	[pool release];
}
出力結果を見てください
2014-03-11 02:02:42.188 Unititled 2[6248:507]alloc以降、カウント1を参照します。
2014-03-11 02:02:42.190 Unititled 2[6248:507]retain以降参照カウント2
2014-03-11 02:02:42.190 Unititled 2[6248:507]実行---print
2014-03-11 02:02:42.191 Unititled 2[6248:507]releaseの後、カウント1を参照します。
2014-03-11 02:02:42.191 Unititled 2[6248:507]はnilに設定してから参照カウント0
arcを使わないと 次のルールを知る必要があります。 知っています
1、allocまたはcopyを使ってオブジェクトを作成したら、releaseを忘れずに使ってください。
2、直接にオブジェクトを作成していない場合、releaseに行かないでください。
3、直接にオブジェクトを作成していない場合、使用時間が長い場合は、copyまたはretainを使用することができますが、使用が完了したらreleaseオブジェクトが必要です。retainとreleaseは一致します。
具体的な 後でまた話します