私は Objective-C と iOS の開発に不慣れで、私のクラスではデリゲート プロトコルを宣言しています。
私はそれを行ういくつかの例を見つけました.それらはすべて非常に似ていますが、自分自身で明確にして理解したいいくつかの違いがあります.
例 1:
(リンク - https://stackoverflow.com/a/12660523/2117550およびhttps://github.com/alexfish/delegate-example/blob/master/DelegateExample/CustomClass.h )
MyClass.h
#import <BlaClass/BlaClass.h>
@class MyClass; // removed in example 2
@protocol MyClassDelegate <NSObject>
@optional
- (void) myClassDelegateMethod:(BOOL)value;
@end
@interface MyClass : NSObject
@property (nonatomic, weak) id <MyClassDelegate> delegate;
@end
MyClass.m
#import "MyClass.h"
@implementation MyClass
@synthesize delegate; // removed in example 2
- (void) myMethodToDoStuff {
[self.delegate myClassDelegateMethod:YES];
}
@end
例 2: (リンク - http://www.tutorialspoint.com/ios/ios_delegates.htm )
実際には、これら2つの違いを除いて同じです..
異なる点:
- 例 1 ではプロトコルの前に宣言し
@class
ていますが、本当に必要ですか? または単にベストプラクティス。2 番目の例は、この宣言がなくても問題なく動作します。 - 例 1 では
@synthesize delegate
、私が理解しているように、プロパティのゲッター/セッターを作成しますが、本当に必要なのでしょうか? 2 番目の例は、これがなくても機能します。
どちらの例も問題なく動作します。私の中で起こっている混乱を取り除きたいだけです。
ありがとう!