これは、クラスの1つの実装ファイルにあるものです...
コード設定 #1
@interface MyViewController (PrivateMethods)
- (NSString *)myPrivateMethod;
@end
@implementation MyViewController
- (void)viewDidLoad
{
NSString *myString = [self myPrivateMethod];
NSLog(@"%@", myString);
}
- (NSString *)myPrivateMethod
{
return @"someString";
}
@end
このコードでは、すべてが機能し、「someString」がログに記録されます。
しかし、私のコードはどういうわけか異なって見えるべきではありませんか? 私は実際にそのカテゴリを誤って使用しています (何かをコピー/貼り付けしたのですが、「PrivateMethods」がそこにあることに気づきませんでした。クラス拡張を使用するつもりでした)。
私のコードは実際には次のいずれかのように見えるべきではありません:
コード設定 #2
@interface MyViewController ()
- (NSString *)myPrivateMethod;
@end
@implementation MyViewController
....
または:
コード設定 #3
@interface MyViewController (PrivateMethods)
- (NSString *)myPrivateMethod;
@end
@implementation MyViewController (PrivateMethods)
....
この状況で起こっていることの背後にあるニュアンスは何ですか? コード設定 #1 とコード設定 #2 の違いは何ですか?
編集:セットアップ#3に関する質問
このように設定すると、何が達成されますか? これは「うまくいく」でしょうか?
@interface MyViewController (PrivateMethods)
- (NSString *)myPrivateMethod;
@end
@implementation MyViewController
- (void)viewDidLoad
{
NSString *myString = [self myPrivateMethod];
NSLog(@"%@", myString);
}
@end
@implementation MyViewController (PrivateMethods)
- (NSString *)myPrivateMethod
{
return @"someString";
}
@end