Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

1.1 Objective C の基礎

Jun Morimoto edited this page May 5, 2014 · 18 revisions

参考 : Objective-C プログラミング

object 生成

NSObject *obj = [[NSObject alloc] init];

method

[obj exeWithArg1:hoge arg2:fuga]

Objective-C にはメソッドにラベルがある。

クラスの作成

MixiSampleClass.h, m を作成。

MixiSampleClass.h

#import <Foundation/Foundation.h>

// [1] 列挙型
typedef NS_ENUM(NSInteger, SampleType){
    SampleTypeHoge = 0,
    SampleTypeFuga,
    SampleTypePiyo
};

@interface MixiSampleClass : NSObject

@property (nonatomic, strong) NSString *name; //[2] property

-(id)initWithName:(NSString *)name sampleType:(SampleType)sampleType; //[3] instance method
+(NSString *) getStaticString; //[4] class method

@end

MixiSampleClass.m

#import "MixiSampleClass.h"

static NSString *const constString = @"const"; // [5]クラス定数
static NSString *staticString = @"static"; // [6]クラス変数

// [7] 無名カテゴリ
@interface MixiSampleClass()

@property (nonatomic, assign) BOOL isEnabled;
@property (nonatomic, assign) SampleType sampleType;

@end

@implementation MixiSampleClass

-(id)initWithName:(NSString *)name
       sampleType:(SampleType)sampleType
{
    self = [super init];
    if(self){
        _name = name; //[8] access iVar
        _isEnabled = YES;
        _sampleType = sampleType;
    }
    return self;
}

+ (NSString *)getStaticString
{
    return staticString;
}
@end

[1] 列挙型

定数に名前を付けて定義することができ、その集合に名前をつけることが出来ます

[2] property 宣言

  • name というインスタンス変数を持っている(自動的に生成)
  • nonatomic : 排他制御しない
  • strong : オーナーシップをもっている
  • -setName, -name という setter, getter を自動的に生成。(getter=hoge, setter=fuga)と明示的に命名することも可能

[3] instance method

インスタンスメソッドには - をつけて宣言

[4] class method

クラスメソッドには + をつけて宣言

[5] 定数

const をつけて宣言

[6] クラス変数

static をつける

[7] 無名カテゴリ

無名カテゴリ内で宣言した property やメソッドは private 扱いになる。

[8] access to ivar

  • 自クラス内のインスタンス変数を参照、代入するときは _name = hoge, fuga = _name (self.name も可)
  • 他クラスのインスタンス変数の場合は obj.name

確認

  • MixiViewController の viewDidLoad で MixiSampleClass のインスタンスを生成してください。
  • NSLog() を使って、生成したオブジェクトのプロパティを確認してください。

カテゴリ

CustomizingExistingClasses

Objective-C では、あるクラスのメソッド群を別のモジュールとして宣言することが出来ます。その仕組みがカテゴリです。カテゴリは大規模クラスのメソッドを分割する他に既存のクラスへの拡張メソッドを作成することも可能です。

NSString クラスに拡張メソッドを実装してみましょう

category1

category2

NSString+HogeAddition.h

#import <Foundation/Foundation.h>

@interface NSString (HogeAddition)

-(NSString *)addHoge;

@end

NSString+HogeAddition.m

#import "NSString+HogeAddition.h"

@implementation NSString (HogeAddition)

-(NSString *)addHoge
{
    return [NSString stringWithFormat:@"%@hoge", self];
}

@end

確認

MixiSampleClass クラスのインスタンス変数 name に対して addHoge メッセージを送ってみましょう。

はじめに

  1. iOSについて

  2. Xcode最初のステッフ

  3. 導入

  4. Objective C の基礎

  5. メモリ管理

  6. 1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)

  7. 1.3 UIViewController1 UIViewController のカスタマイズ(storyboard)

  8. UIViewController2 - ModalViewController

  9. UIViewController2 - ModalViewController(storyboard)

  10. UIViewController3 - ライフサイクル

  11. HomeWork 1 Objective C の基本文法

  12. HomeWork 2 UIViewControllerとModalViewController

  13. HomeWork 3 UIViewController + Animation

  14. UIKit 1 - container, rotate-

  15. UINavigationController

  16. UITabController

  17. Custom Container View Controller

  18. Supporting Multiple Interface Orientations

  19. HomeWork 1 - タブバーからモーダルビューを表示する

  20. HomeWork 2 - NavigationController

  21. HomeWork 2.3 デバイスことに回転対応

  22. UIKit 2- UIView -

  23. UIView

  24. UIView のカスタマイズ

  25. UIView Animation

  26. HomeWork 1 - UIScrollView

  27. UIKit 3 - table view -

  28. UITableView について

  29. UITableViewとNavigationController

  30. custom UITableViewCell の作成

  31. UITableViewのその他のオプション、カスタマイズ

  32. HomeWork 1 - Dynamic height with a custom uitableviewcell

  33. UIKit 4 - image and text -

  34. UIImagePickerController

  35. Assets Library

  36. UITextFiled, UITextView

  37. KeyboardNotification

  38. Homework 1 - フォトの複数枚選択

  39. ネットワーク処理

  40. NSURLConnection

  41. JSONのシリアライズとデシリアライズ

  42. UIWebView

  43. ローカルキャッシュと通知

  44. NSUserDefaults, Settings Bundle

  45. NSFileManager

  46. Key Value Observing

  47. NSNotification、NSNotificationCenter を用いた通知

  48. UILocalNotification

  49. Blocks, GCD

  50. Blocks

  51. GCD

  52. 【演習】GCD,-Blocksを用いたHTTPリクエストマネージャの作成

  53. 設計とデザインパターン

  54. クラス設計 1

  55. クラス設計 2

  56. [クラス設計演習] (https://github.com/mixi-inc/iOSTraining/wiki/9.3-%E3%82%AF%E3%83%A9%E3%82%B9%E8%A8%AD%E8%A8%88%E6%BC%94%E7%BF%92)

  57. 開発ツール

  58. Instruments, デバッガ

  59. CocoaPods

  60. テスト

  61. iOS開発におけるテスト

  62. GHUnit

  63. Kiwi

  64. KIF

  65. In-App Purchase

  66. In-App Purchase

  67. 付録

  68. Tips of Xcode

  69. Auto Layout 入門

  70. Auto Layout ドリル

Edit sidebar

Clone this wiki locally