🔗開発環境設定
- キーチェーンアクセスを起動->証明書アシスタント->証明書を認証局に要求
- ios provisioning portalから証明書を要求(iOS Developを選択)
- ダウンロードした証明書をダブルクリックして、キーチェーンに追加する
- ここで得られた証明書はどこかネット上で管理しておくと楽。
- そうすると繋げば開発ができるようになる。
🔗エリア
🔗ナビゲータエリア
| |
|---|
| プロジェクトナビゲータ | ファイルごとに参照 |
| シンボルナビゲータ | C: Class, M: Methodなどで参照 |
| 検索ナビゲータ | プロジェクト全体から検索可能 |
| 問題ナビゲータ | エラー・警告 |
🔗注意点
- ObjectiveC++は面白くない。
- 型に対する扱いの難易度が上がる。STLなど使えて便利。でもリテインカウントが雑魚かったり、基本良くない。
- Objective Cは、new(に相当するもの)の引数によって、オブジェクトの型が変わるなどが起きる。インターフェースが同じなら大体同じ。
🔗インスタンスメソッドとクラスメソッド
- "-"をつけるとインスタンスメソッドとなり、インスタンス化しないと利用できない。
- "+"をつけるとクラスメソッドとなり、インスタンス化しなくても使える
🔗Obj-Cのパブリック
- .hファイルに書かれたinterfaceがpublicになり、.mファイルに書かれたinterfaceがprivateになる。
- .mファイルのimplementationの中に書かれていてかつ.hには書かれていないメソッドもprivateになる。
@interface Person ()
@end
🔗C言語との対比
| C | Obj-C |
|---|
| 親クラスがなくてよい | 親クラスを省略して記述できない |
| include | import(ヘッダブロック不要!) |
| ryo->name | ryo.name(アクセサを介す場合) |
| 引数にラベルをつけられない | 引数にラベルをつけて、なんの引数に対するデータなのかがわかる |
| printf("test"); | NSLog(@"test"); |
| string | NSString* |
| sprintf | [NSString stringWithFormat:@"%@ 様", _name] |
| %s | %@ |
| this | self |
| なし | super(親クラスの変数にアクセス) |
🔗クラス
🔗アクセサ以外の実装
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
// 名前
NSString *_name;
}
- (void)setName:(NSString *)name;
@end
#import "Person.h"
@implementation Person
{
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が前につく上に変数の頭が大文字となる。
- 例
#import <Foundation/Foundation.h>
@interface Person : NSObject
@property (nonatomic) NSString *name; // 内部変数は_name
@property (nonatomic) NSInteger age; // 内部変数は_age
@end
#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 |