私はARCとプロジェクトの違いを勉強しています。 私はプロトコルを実装する必要があるカスタムライブラリを使用しますが、ARCなしのプロジェクトではコールバック(onEvent)が呼び出されますが、ARCプロジェクトでは発生しません。ARCが動作していないプロトコル
私は、プロトコルコードへのアクセスを持っていない - それはのonEvent()コールバックと呼ばれています -をしかし、私は、私は次の実装間違っていると思う:
のViewController:
@implementation ViewController
- (IBAction)pressed:(id)sender {
ObjectA *sd = [[ObjectA alloc] init];
[sd startWith:@"myString"];
}
インタフェースObjectAに:
@interface ObjectA : NSObject <MyProtocol>
@property (nonatomic, strong) id<MyProtocol> myProtocol;
- (void) startWith:(NSString *)myString;
@end
実装をObjectA:
- (void) startWith:(NSString *)myString
{
id<MyProtocol> protocolDelegate = self;
self.myProtocol = [[ObjectB alloc] init: protocolDelegate];
[self.myProtocol doStuff];
}
- (void) onEvent
{
NSLog(@"Called");
}
インタフェースをObjectB:
@interface ObjectB : NSObject<MyProtocol>
質問は以下のとおりです。なぜARCプロジェクトで "のonEvent" と呼ばれていませんか?
ありがとうございます。
編集:私はこの方法でのViewControllerを変え解決した
:
@interface ViewController()
@property (nonatomic, strong) ObjectA *sd;
@end
@implementation ViewController
- (void)viewDidLoad {
_sd = [[ObjectA alloc] init];
}
- (IBAction)pressed:(id)sender {
[sd startWith:@"myString"];
}
私は 'onEvent'の呼び出しを見ません。 – shallowThought
私が言ったように、私はプロトコルをコード化するためのアクセス権を持っていません。このプロトコルはライブラリから使用されるためです。 –
を理解してください。 '@property(nonatomic、strong)TypeOfClassFromLibrary myLibClassInstance;'プロパティを作成する必要があります。次に 'viewDidLoad'の中で:' self.myLibClassInstance = [[TypeOfClassFromLibrary alloc] init]; self.myLibClassInstance.nameOfProtocol = self; ' – shallowThought