OC開発-分類の基本アプリケーション(31)

概要

  • OCでの分類:一部のメソッドは、元のコードを変更せずに特定のクラスに拡張できます。
  • OC分類にカテゴリを追加することはできません
  • OC分類とクラスに共通のメソッドがある場合、OC分類のメソッドが優先的に使用されます
  • 複数のOC分類に同じメソッドが含まれています。コンパイルすると、後続の分類のメソッドが呼び出されます

分類するクラス(人物)

//Person.h
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
    int _age;
}
-(void)test;
@end
//Person.m
#import "Person.h"
@implementation Person
-(void)test
{
    NSLog(@"调用了test方法");
}
@end

三人分類

3.1 Person + MJ

//Person.MJ.h
#import "Person.h"
@interface Person (MJ)
-(void)study;
@end
//Person+MJ.m
#import "Person+MJ.h"

@implementation Person (MJ)
- (void)study
{
    NSLog(@"学习了——");
}
-(void)test
{
    NSLog(@"Person+MJ.h调用了test方法");
}
@end

3.2 Person + JJ

//Person+JJ.h
#import "Person.h"
@interface Person (JJ)
-(void)test2;
@end
//Person.JJ.m
#import "Person+JJ.h"

@implementation Person (JJ)
-(void)test2
{
    NSLog(@"test2----");
}
-(void)test
{
    NSLog(@"Person+JJ.h---test");
}
@end

4コンパイル順序を調整する

5つのカテゴリ

5.1利点

  • 巨大なクラスをモジュールで開発できます
  • 巨大なクラスは複数の人で書くことができ、チームワークを促進します

5.2ノート

  • カテゴリは初期クラスのインスタンス変数にアクセスできますが、変数のみを追加することはできず、メソッドのみを追加できます。変数を追加する場合は、継承によるサブクラスの作成を検討できます
  • カテゴリは元のクラスのメソッドを実装できますが、元のメソッドに直接置き換わるため、お勧めできません。その結果、元のメソッドにアクセスできなくなります。
  • 同じメソッドが複数のカテゴリに実装されている場合、コンパイルに関係する最後のメソッドのみが有効になります
362の元の記事を公開 118の賞賛 530,000ビュー

おすすめ

転載: blog.csdn.net/Calvin_zhou/article/details/105422903