これが私がやろうとしていることです:
コードの概要をわかりやすくするために、いくつかのメソッドを別の .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' のインターフェイス宣言が見つかりません」をスローする
だからここに私の質問があります:
最初の奇妙なことは、myViewController の代わりに UIViewController に対してまったく同じことを行うと、すべてが正常に機能することです。しかし、myViewController は UIViewController のサブクラスであるため、myViewController (@interface iSnahViewController : UIViewController) でも機能しないのはなぜですか?
もう 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
そして、それはすでに上記のエラーを引き起こすのに十分です.