Objective c 理解种族主题
我正在研究反应性可可,我想知道为什么以下方法不起作用: 在B类中,我声明:Objective c 理解种族主题,objective-c,reactive-cocoa,Objective C,Reactive Cocoa,我正在研究反应性可可,我想知道为什么以下方法不起作用: 在B类中,我声明: +(RACSubject*)importText{ RACSubject *subject = [RACSubject subject]; //1 block NSArray *testArray = @[@"1",@"2",@"3"]; //2 block [subject sendNext:[[[testArray rac_sequence] map:^id(NSS
+(RACSubject*)importText{
RACSubject *subject = [RACSubject subject];
//1 block
NSArray *testArray = @[@"1",@"2",@"3"];
//2 block
[subject sendNext:[[[testArray rac_sequence] map:^id(NSString* value) {
return [value stringByAppendingString:@"More"];
}] array]];
return subject;
}
在A级:
[[SecondObject importText] subscribeNext:^(id x) {
NSLog(@"Output is %@", x);
}];
但是,控制台中没有任何输出。为什么?请仔细查看
importText
方法的作用。您首先创建了一个主题和临时数组。然后在任何其他事情发生之前,您只需调用sendNext:…
发送您临时创建的值,但其他人尚未订阅该主题。最后,您的importText
方法返回SecondObject
将获取并订阅的主题
@interface SomeClass
@property (nonatomic, strong) RACSubject *subject;
@end
@implementation SomeClass
- (id)init
{
self = [super init];
if(self) {
self.subject = [RACSubject subject];
}
}
- (RACSubject *)rac_signalForImportText
{
return self.subject;
}
- (void)importText
{
NSArray *testArray = @[@"1",@"2",@"3"];
//2 block
[subject sendNext:[[[testArray rac_sequence] map:^id(NSString* value) {
return [value stringByAppendingString:@"More"];
}] array]];
}
SomeClass* Second = [SomeClass alloc] init];
[[Second rac_signalForImportText] subscribeNext:^(id x) {
NSLog(@"Output is %@", x);
}];
[Second importText];
我不确定您为什么希望以这种方式使用主题,但请注意,rac\u signalforimportext
在importext
方法调用之前不会被调用,因为在这里我使用主题调用sendNext
,这将触发订阅rac\u signalforimportext
的用户。希望这有帮助