目次

概要

  • iPhone開発の仕方

参考

開発環境設定

  • キーチェーンアクセスを起動->証明書アシスタント->証明書を認証局に要求
  • 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言語との対比

CObj-C
親クラスがなくてよい親クラスを省略して記述できない
includeimport(ヘッダブロック不要!)
ryo->nameryo.name(アクセサを介す場合)
引数にラベルをつけられない引数にラベルをつけて、なんの引数に対するデータなのかがわかる
printf("test");NSLog(@"test");
stringNSString*
sprintf[NSString stringWithFormat?:@"%@ 様", _name]
%s%@
thisself
なし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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-16 (月) 11:14:38 (2659d)