目次 †
概要 †
参考 †
開発環境設定 †
- キーチェーンアクセスを起動->証明書アシスタント->証明書を認証局に要求
- ios provisioning portalから証明書を要求(iOS Developを選択)
- ダウンロードした証明書をダブルクリックして、キーチェーンに追加する
- ここで得られた証明書はどこかネット上で管理しておくと楽。
- そうすると繋げば開発ができるようになる。
エリア †
ナビゲータエリア †
プロジェクトナビゲータ | ファイルごとに参照 | シンボルナビゲータ | C: Class, M: Methodなどで参照 | 検索ナビゲータ | プロジェクト全体から検索可能 | 問題ナビゲータ | エラー・警告 |
文法 †
インスタンスメソッドとクラスメソッド †
- "-"をつけるとインスタンスメソッドとなり、インスタンス化しないと利用できない。
- "+"をつけるとクラスメソッドとなり、インスタンス化しなくても使える
Obj-Cのパブリック †
- .hファイルに書かれたinterfaceがpublicになり、.mファイルに書かれたinterfaceがprivateになる。
C言語との対比 †
C | Obj-C | 親クラスがなくてよい | 親クラスを省略して記述できない | include | import(ヘッダブロック不要!) | ryo->name | ryo.name(アクセサを介す場合) | 引数にラベルをつけられない | 引数にラベルをつけて、なんの引数に対するデータなのかがわかる | printf("test"); | NSLog(@"test"); | string | NSString* | sprintf | [NSString stringWithFormat?:@"%@ 様", _name] | %s | %@ | this | self | なし | super(親クラスの変数にアクセス) |
クラス †
アクセサ以外の実装 †
- 例
- person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
// 名前
NSString *_name;
}
- (NSString *)name;
- (void)setName:(NSString *)name;
@end
- person.m
#import "Person.h"
@implementation Person
- (NSString *)name
{
return _name;
}
- (void)setName:(NSString *)name
{
_name = name;
}
@end
- 使うとき
Person *ryo = [[Person alloc] init];
[ryo setName:@"Hamko"];
NSLog(@"名前は%@です", [ryo name]);
ゲッタ・セッタの実装 †
- propertyを使う。
- 内部変数は_nameなど、_が前につくものとなる。
- 外部からアクセサ(ゲッタ・セッタ)を明示的に使う場合は、getName, setNameなど、get, setが前につく上に変数の頭が大文字となる。
- 例
- person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic) NSString *name; // 内部変数は_name
@property (nonatomic) NSInteger age; // 内部変数は_age
@end
- person.m
#import "Person.h"
@implementation Person
- (NSInteger)age // propertyの変数を直接関数名として、アクセサを上書き可能
{
return _age*2; // 内部変数は_age
}
@end
- 使うとき
Person *ryo = [[Person alloc] init];
ryo.name = @"Hamko"; // [ryo setName:@"Hamko"];
NSLog(@"名前は%@です", ryo.name);
よく見る構文 †
[super viewDidLoad?]; | 親クラスで定義されているviewDidLoad?メソッドを実行して | 符号付整数 | NSInteger, int | 符号無整数 | NSUInteger, uint | 浮動小数点型の数値 | float, double | 真理値 | BOOL, bool, Boolean |
|