1

私はこれが行われたのを見たと思いますが、正しい用語を知らないと思うので、それに関するドキュメントを見つけることができません。他の1つのクラス内でのみ使用するため、他のクラスの実装内で完全に記述できる特別なクラスを作成する方法を知る必要があります。

基本的に、次の3つの追加処理を実行できる特殊なNSMutableArrayが必要です。

  • 要求されたら、最新のアイテムを削除します
  • そのアイテムをlast_most_recent_item変数に格納します
  • 新しいアイテムが追加されたかどうかを追跡します
  • 新しいアイテムが追加されておらず、配列の最後のオブジェクトが要求された場合は、実際の最後のアイテムではなく、last_most_recent_itemを返します。

しかし、これが問題です。このSpecialNSArrayが必要なのは1つのクラス内だけです。そのため、宣言と実装を別々のファイルではなく、そのクラス内に配置したいと思います。私はそれが行われたのを見たと思います。誰かがそれが何と呼ばれているのか、そして私がそれをどのように行うことができるのか知っていますか?

4

3 に答える 3

4

これを行うには、使用するクラスの実装ファイルに新しいクラスを追加するだけです。これはプライベートクラスと呼ばれていると思います。

クラスがMyClassであり、改善された配列がMyClass.mのMyArrayであるとします。

@interface MyArray
{


}
@end

@implementation MyArray

@end


@implementation MyClass

@end

この場合、MyArrayの追加のメソッドは、MyClassから呼び出された場合にのみコンパイラーによって認識されます。

Objective Cにはプライベートなものは何もないことに注意してください。MyArrayのこれらのメソッドは、実行時にプログラムのどこからでも呼び出すことができます。コンパイル時にこれらのメソッドが警告を発するだけです。

于 2012-07-18T16:56:51.260 に答える
3

NSMutableArrayのカテゴリについて説明していると思います。

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html

YourClass.m
@interface NSMutableArray : (YourClassExtentions)
@end

@implementation NSMutableArray : (YourClassExtentions)
@end

@implementation YourClass()
@end

カテゴリを別々のmファイルとhファイルに作成して、インポートすることもできます。

于 2012-07-18T16:48:40.827 に答える
1

@interface MyInternalClass ...クラスと@implementation MyInternalClass ...コードセグメントを「パブリック」クラスの.mファイルに入れるだけです。.hに行を追加し@class MyInternalClass;て、「パブリック」クラスのインスタンス変数でそのクラスへのポインターを宣言できるようにします。

于 2012-07-18T17:21:30.620 に答える