我有一个非常简单的类(目前用作测试类),它使用delegate/protocol
方法与其父类交互。但是,我真的很想将其转换为使用blocks
. 但是我找不到很好的资源或教程来帮助我弄清楚如何做到这一点。所有的积木教程都太复杂了,我真的想要一个小而简洁的例子来说明如何做到这一点。
我目前有课程:
#import <Foundation/Foundation.h>
@protocol TestObjectDelegate <NSObject>
@optional
-(void)testObjectSucceeded:(BOOL)passedTest;
-(void)testObjectedFailed:(NSError *)error;
@end
@interface TestObject : NSObject {
id<TestObjectDelegate> _delegate;
}
-(void)compare:(NSString *)stringA with:(NSString *)stringB;
@end
#import "TestObject.h"
@implementation TestObject
- (id)initWithDelegateController:(id<TestObjectDelegate>)delegate {
self = [super init];
if (self) {
_delegate = delegate;
}
return self;
}
-(void)compare:(NSString *)stringA with:(NSString *)stringB {
if ([stringA isEqualToString:stringB]) {
if(_delegate && [_delegate respondsToSelector:@selector(testObjectSucceeded:)]) {
[_delegate testObjectSucceeded:YES];
}
else {
[_delegate testObjectSucceeded:NO];
}
}
else {
if(_delegate && [_delegate respondsToSelector:@selector(testObjectedFailed:)]) {
[_delegate testObjectedFailed:nil];
}
}
}
@end
我怎样才能开始将其转换为基于块的功能?另外,我知道在实现块功能时需要注意“保留周期”。将此类转换为使用块而不是委托/协议时,我需要注意什么?谷歌搜索“保留周期”也给出了一些过于复杂的答案。
任何起始指针将不胜感激?