1

これが私がやろうとしていることです:

コードの概要をわかりやすくするために、いくつかのメソッドを別の .h ファイルと .m ファイルに入れたいと考えています。

したがって、基本的には、メソッドをカテゴリとしてmyViewController拡張したいものがあります。myReactionOnAnimationDidEnd:

したがって、次のように宣言し"myCustomClasses.h"て、目的のメソッドで拡張します。

#import "myViewController.h"
@interface myViewController (myReactionOnAnimationDidEnd)
- (void)myReactionOnAnimationDidEnd:(NSNotification *)aNotification;
@end

での実装"myCustomClasses.m"は次のとおりです。

#import "myCustomClasses.h"
#import "myViewController.h"

@implementation myViewController (myReactionOnAnimationDidEnd)    
- (void)myReactionOnAnimationDidEnd:(NSNotification *)aNotification {

    self.myLabel1.text = @"Test"; 
}
@end

コンパイラがビルド失敗エラー「'myViewController' のインターフェイス宣言が見つかりません」をスローする

だからここに私の質問があります:

  1. 最初の奇妙なことは、myViewController の代わりに UIViewController に対してまったく同じことを行うと、すべてが正常に機能することです。しかし、myViewController は UIViewController のサブクラスであるため、myViewController (@interface iSnahViewController : UIViewController) でも機能しないのはなぜですか?

  2. もう 1 つの奇妙な点は、@宣言を完全にスキップすると、"myCustomClasses.m" の @implementation が正常に機能することです。さて、それはどうしてでしょうか??

君たちありがとう!どんな助けでも大歓迎です!! ハンス


さて、面白いことに、[新しいファイル] -> [ObjC] - [カテゴリ テンプレート] でカテゴリを作成しても、まったく同じビルド エラーが発生します。基本的に、次の 2 つのファイルが作成されます。

ヘッダーファイルで:

#import "myViewController.h"

@interface myViewController (myCategories)  //<-- "Cannot find interface declaration for 'myViewController'"



@end

および .m ファイルを使用

#import "myViewController+myCategories.h"

@implementation myViewController (myCategories)


@end

そして、それはすでに上記のエラーを引き起こすのに十分です.

4

2 に答える 2

0

myCustomClasses.mおそらくインクルードする必要があり、インクルードmyCustomClasses.hしない必要myViewController.hがあるため、コンパイラーはカテゴリー宣言を認識します。myCustomClasses.hすでにが含まれているためmyViewController.h、コンパイラには必要なすべての宣言が必要です。

于 2012-06-08T13:31:08.407 に答える
0

私はついにそれを働かせました!

ビルド エラーが発生したため、Category-.h ファイルを primary クラスの .h ファイルにインポートしていました。

#import "myViewController+myCategories.h" //<-- in the  "myViewController.h" 

上からの建物のエラーにつながります。これは間違っているようです!だから、それをしないでください。

「myViewController」クラスが .h ファイルをインポートしなくても、どのようにしてそのカテゴリを認識できるのか、まだ完全には理解できていませんが、これはこれがどのように行われるかの有効な方法のように見えるので、あなたと共有したいと思います.

みんな助けてくれてありがとう!!

于 2012-06-10T12:48:57.510 に答える