Go to list of users who liked
More than 5 years have passed since last update.
用語整理
ビルド
コンパイルとリンクを経て実行可能ファイルを生成。コンパイル
ソースコードを中間オブジェクトに変換。リンク
諸々のライブラリやファイルを結合させて一つにまとめる。コンパイラディレクティブ
Objective-Cにおいて、@で始まるものはプログラムでは無くコンパイラへの指示。
これをコンパイラディレクティブと言う。
変数の利用
- 変数を利用するには
最初に宣言文を記述しておく必要がある。
inta;
- 型における演算子の注意点
inta=3;intb=2;floatc=a/b;
この際、float c は1.5でなく1となる(int同士のa/bが先に計算されるため)。
inta=3;intb=2;floatc=a/(float)b;
このように、aもしくはbもしくはab双方をfloat型にキャストしておけば、
intよりもfloatが優先され、計算結果もfloatとなり、cに正しい値が入る。
構造体
複数のメンバを持つデータ
typedefstructPerson{floatheight;floatweight;intbirthYear;}Person//struct PersionにPersionというaliasを切る。Persiona;//変数宣言a.height=170.5;
クラス
クラスの定義sample
ヘッダファイル(Sample.h)
@interfacePersion:Mammal@protected//メンバ定義intlife;floatheight;floatweight;}//アクセサ@propertyintlife;@propertyfloatheight,weight;@end
実装ファイル(Sample.m)
# import "Sample.h"@implementationPerson//インスタンスメソッド定義-(int)getLife{hoge;return;}-(void)healLife:(int)volume{life+=volumereturn;}//クラスメソッド定義+(int)exterminate{//gameoverreturn;}@synthesizelife,height,weight;@end
インスタンスの生成方法
Person*tarou=[[Persionalloc]init];//メンバセットtarou->life=10;//メソッド呼び出し[tarougetLife][tarouhealLife:5]//クラスメソッド呼び出し[Personexterminate]
ヘッダファイルと実装ファイル
プログラムを分割して記述するための仕組み
ヘッダファイル(.h)はクラスの「目次」
→このファイルのみでクラスの全体を俯瞰できる。
→@interface〜@end
→クラスの目次(宣言)(〜終わり)実装ファイル(.m)はクラスの「本体」
→@implementation〜@end
→クラス実装(〜終わり)
※分割のメリット・・クラスを外部に公開する際、ヘッダファイルだけでもユーザはそのクラスを利用できる。
一方実装の内部は隠蔽することができる。
import文
別ファイルのプログラム、ライブラリを読み込む。
文末にセミコロンが不要。
- ヘッダファイル(.h)に書く場合
importに続くクラス宣言(@interface)で指定されている親クラスがある場所を示す。
# import <UIKit/UIKit.h>@interfaceViewController:UIViewController
→Apple提供のUIKitフレームワーク内のUIKit.hを読み込む。
ViewControllerの親クラスであるUIViewControllerはその中に存在する。
- 実装ファイル(.m)に書く場合
ヘッダファイルの場所を示す
allocとinitとnew
Person*tarou=[[Persionalloc]init];
alloc
インスタンスの生成に必要なメモリ容量を確保する。init
メモリ上にロードされたインスタンスに対して実行する。
→インスタンスがデータを保存出来る状態にする。コンストラクタを呼ぶ。new
alloc + init
Person*tarou=[Persionnew];
id型
汎用オブジェクト型。
どのような参照型にも変化することが出来る。
最初に型を決めずに変数を用意し、実際に使うタイミングで型を決定する。
→動的な型付け
idオブジェクト型
idobj;//具体的な型は決まっていない。obj=[[Personalloc]init];//この時点でPersonクラスになる。
@propertyと@synthesize
@property
プロパティを宣言すると、同名のインスタンス変数に対するアクセサ(setter/getter)が自動生成される。@synthesize
@propertyで指定した属性に対してアクセサメソッドを定義する。
コンストラクタ
init(NSObject)を上書きする。
@implementationPerson-(id)init{if(self=[superinit]){life=1;height=1;weight=1;}returnself;}
メモリ
使わなくなったインスタンスを解放する。
保持カウンタ
インスタンス生成時に値1で初期化される。
NSObjectクラスのretainCountというプロパティが保持している。
保持カウンタの値が0になった時点で、メモリ上から解放される。retain:保持カウンタの値を1増やす
release:保持カウンタの値を1減らす
10/17
とりあえずここまで
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme