Objective -C NSDate、Category 、Extension、Protocol


NSDateの使用
  • NSDateは、Cocoaにおける日付と時間を処理するための基礎クラスであり、クラスのある所定の時刻、具体的な日付、時間、およびタイムゾーン
  • をカプセル化する.
  • +dateメソッドを使用して現在の日付と時刻
  • を取得する.
  • 例えば、NSDate*nowDate=[NSDate date];
  • 注意、NSLog(@"%@",nowDate);どのタイムゾーンの時間、印刷時間にかかわらず、印刷時には常に対応する0タイムゾーン時間
  • を印刷する
    NSTimeinterval
  • NSTimeInterval(すなわちdoubleタイプ)は、秒単位の時間間隔
  • を表すために用いる.
  • -initWithTimeIntervalSinceNow:メソッドを使用してNSTimeIntervalパラメータを入力し、NSDateオブジェクト
  • を作成できます.
  • 例えば、NSDate*tomorrowDate=[[NSDate alloc]i n i t WithTimeIntervalSinceNow:24*60*60];
  • NSDate * yesterdayDate = [[NSDate alloc] initWithTimeIntervalSinceNow:-1 * 24*60 *60];
  • は、NSTimeinterval=[tomorrowDate timeIntervalSinceDate:yesterdayDate]; 

  • NSDateFormatterの使用
    1.
  • NSDateFormatterはiOSの日付フォーマットクラスであり、主な機能は日付を表すNSStringと
  • を実現することである.
  • SDateの相互回転は、システムの事前設定された文字列フォーマットを提供し、ユーザーが文字列フォーマットをカスタマイズできるようにします.タイムゾーン、月の名前、紀元の記号、local、calender、AM/PM、weekdayの記号
  • を設定できます.
  • 一般的な時間フォーマット文字列は、y年、M年の月、d月の日数、H
  • です.
  • 中の時間数(0-23)、ham/pm中の時間数(1-12)、m時間中の分数、s分中の秒数
  • 指定日付フォーマット:NSDateFormatter*formatter=[[NSDateFormatter alloc]init];[formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

  • 2.
  • NSDateFormatterは、日付を対応する文字列に変換し、文字列を対応する日付に変換します.
  • 日付変換文字列:NSDateFormatter*formatter=NSDateFormatter alloc]init];
  • [formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
  • NSString *dateString=[formatter stringFromDate: [NSDate date]]; 

  • 3.
  • 時間文字列を対応する日付に変換:NSDateFormatter*formatter=[[NSDateFormatter alloc]init];
  • [formatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  • NSString * dateStr = @”2008-08-08 20:08:08”; NSDate * date = [formatter dateFromString:dateStr]; 

  • カテゴリCategory
  • Categoryは分類またはクラス
  • とも呼ばれる.
  • の主な役割は、ソースコードのないクラスにメソッドを追加することです.
  • Categoryで追加する方法は元のクラスの一部になります.クラスを拡張する機能を達成します. 

  • Categoryの定義
  • 新規ファイル
  • Objective-C Categoryテンプレート
  • を選択
  • クラス名と分類名を記入
  •  .hファイル追加方法宣言
  • .m追加方法実装
  • が使用する必要がある場所で呼び出されます.

  • Categoryの声明
  • NSString+SayHi.hファイル
  • @interface NSString (SayHi)
  • - (void)hi; 
  • @end 

  • Categoryの実現
  • NSString+SayHi.mファイル
  • #import “NSString+SayHi.h”
  • @implementation NSString(SayHi)
  •  - (void)hi{
  • NSLog(@"これはcategoryによってNSStringに追加されたhiメソッドです");
  •  }
  • @end

  • Categoryとサブクラスの違い
        
    Extension
  • Extensionの主な役割は、クラスにプライベートメソッドを追加することです.
  • オブジェクト向けプログラミングの別の名前は、インタフェース向けプログラミングと呼ばれます.
  • クラスを設計するとき、インタフェースと呼ばれる外部公開が必要な方法もあります.内部でのみ使用される方法もあります(たとえば、ある方法の小さなステップです).
  • Extensionの機能は、これらの内部で使用されるメソッド(「プライベート」メソッド)を管理することです.

  • Extensionの定義
  • Extensionの構文フォーマットはCategoryとよく似ています
  • はCategoryに相当します.hファイルは元のクラスに移動した.mファイル中
  • Extensionは、クラスに対して、アクティブコードを必要とするクラス
  • を対象とする.
    Extensionの定義
  • xxx.mファイル
  • @interface xxx (ExtensionName) 
  • //あなたのメソッドリスト
  • @end

  • Extensionの実装
  • @implementation xxx
  • //メソッドの実装
  • @end 

  • CategoryとExtensionの違い
        
    Protocol
  • Protocolはプロトコルとも呼ばれ、iOS開発でよく使われる技術です.
  • プロトコルは標準(多くの方法の声明)であり、唯一である.hファイル.
  • プロトコルのオブジェクト実装プロトコルで定義する方法
  • を受け入れる.
    Protocol

  • プロトコルは、タスクリスト(または便利な貼り付け)のように、処理する必要があることがたくさん書かれています.リストを誰に渡すか、誰がリストに規定された任務を完成しなければならない.
  • プロトコルが定義された後、このプロトコルを遵守し、プロトコルを実現する方法が必要です.
  • 契約を遵守するhファイルの親クラス名の後に<プロトコル名]>を書きます.プロトコルを実現する方法はmファイルでプロトコルを実装する方法.このクラスに
  • をいくつか追加することに相当します.
  • メソッド.このクラスのインスタンスは、これらのメソッドを呼び出すことができます.

  • Protocolの定義
  • @protocolで開始し、@endで終了します.たとえば、
  • @protocol MarryProtocol
  • - (void)makeMoney;
  • @optional//オプションのプロトコル、
  • - (void)washcloth;
  • - (void)cook;
  • @end
  • プロトコルのメソッドのデフォルトは、@requiredキーワード@optional修飾のメソッドがオプションであり、実装しても実装しなくてもよいという実装が必要です.

  • 契約の遵守方法
  • #import “MarryProtocol”
  • #ここでプロトコルを導入するヘッダファイル
  • @interface Boy : NSObject
  • ...
  • @end
  • @implementation Boy
  • //プロトコルにおけるメソッドの実装
  • @end

  • delegate設計モード
  • Protocolのコア使用シーンはdelegate設計モードを実現することである.
  • delegate音訳代理.通俗的に言えば代理店で、主な任務はあなたにいくつかの任務を完成させることです.
  • 例えば、家政婦はdelegateと考えることができ、主な任務は子供を連れて行くこと、料理を作ること、洗濯することなどです.