如何实现Objective C类的块属性

哈茨

鉴于:

@interface NSArray (Sample)

@property (nonnull, nonatomic, readonly) NSArray *_Nonnull (^mapped)(id __nullable (^block)(id __nonnull));

@end

如何实现这一类?我对这个块属性语法感到困惑。这解释了类型注释:https : //developer.apple.com/swift/blog/?id=25

这是我开始实施的:

@implementation NSArray (Sample)

typedef id __nullable (^block)(id __nonnull);

...
@end

后来试过这个:

@implementation NSArray (Sample)

typedef NSArray *_Nonnull (^mapped)( id __nullable (^block)(id __nonnull) );

-(mapped)mapped {
    return ^( id __nullable (^block)(id __nonnull) ){
        return @[@"what", @"the", @"heck"];
    };
}
@end

后来还是:

从技术上讲,我认为上述内容将履行扩展的合同,但根据 bbum 的评论,我试图确定创建这种扩展的意图可能是什么。分开挑选:

  1. 该属性用于接受闭包参数并返回 NSArray 的闭包。
  2. 在实现中,我们根据 readonly 属性属性为此闭包创建 getter。

通常我们会使用 setter 注入/设置块,但是为了履行合约,我们可以将其构造为实例变量“someMapped”,如下所示。

@implementation NSArray (Sample)

typedef NSArray *_Nonnull (^mapped)( id __nullable (^block)(id __nonnull) );

-(mapped)mapped {

   //Normally someMapped block definition would be injected/set by the setter -(void) setMapped:(mapped) aMapped {
   mapped someMapped = ^(id __nonnull someId) {
       NSMutableArray * new = [[NSMutableArray alloc] init];
       for( NSMutableDictionary* dict in self) {
           NSMutableString * str = [dict objectForKey:someId];
           [str stringByAppendingString:@".png"];
           [new addObject:str];
       }
     return [new copy];
    };

  return someMapped;
}

@end
笨蛋

目前尚不清楚您要做什么。你想在 上实现一个map类型函数NSArray吗?如果是这样,则不需要 an @property,这意味着您正在存储与它们的实例相关联的内容。你可能只想要一个方法:

typedef id __nullable (^bt_MapBlockT)(id __nonnull);
- (NSArray *)bt_map:(bt_MapBlockT) block;
// written in browser... probably hosed the syntax slightly.

有很多关于 NSArray 上实现 map-reduce-filter-whatever 的示例,顺便说一句。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Objective-C ++:如何实现引用?

来自分类Dev

检查Objective-C块类

来自分类Dev

Objective-C如何强制子类实现方法?

来自分类Dev

如何在Realm中实现继承(iOS,Objective C)

来自分类Dev

如何使用Objective-C实现可链接语法?

来自分类Dev

将Swift闭包作为属性存储在Objective-C类中,其中使用typedef声明该块

来自分类Dev

如何在不定义新类的情况下在 Swift 中实现 Objective-C

来自分类Dev

Objective-C @实现变量

来自分类Dev

如何理解Objective-C块的类型?

来自分类Dev

如何在Objective C中存储块?

来自分类Dev

如何通过GCD在Objective-C中实现可重入锁定机制?

来自分类Dev

如何在SWIFT中实现Objective-C回调处理程序?

来自分类Dev

如何使用Objective-C将自定义初始化实现公开给接口?

来自分类Dev

适用于Objective-C的XMPPFramework。如何实现这样的setphoto方法

来自分类Dev

如何与KVC访问器一起使用以实现可变数组Objective-C

来自分类Dev

请帮助我了解如何实现Objective-C单例

来自分类Dev

如何在Objective-C中为FizzBuzz编写标头和实现文件?

来自分类Dev

如何使用Objective-c实现AES PKCS5Padding

来自分类Dev

如何实现诸如Feedly之类的动画,在iOS Objective-C中整合新闻应用程序

来自分类Dev

如何在带有参数的objective-C中实现swift委托方法?

来自分类Dev

如何在类中实现可选属性

来自分类Dev

Objective-C中的Singleton类严格实现

来自分类Dev

Objective-C如何处理具有相同属性名称的子类和超类?

来自分类Dev

如何从类Objective C外部获取和设置私有实例变量/属性?

来自分类Dev

在Swift中实现Objective C协议

来自分类Dev

Objective-C中的堆栈实现

来自分类Dev

在Swift中实现Objective C代码

来自分类Dev

Objective-C协议的默认实现

来自分类Dev

Java到Objective-C RSA的实现

Related 相关文章

  1. 1

    Objective-C ++:如何实现引用?

  2. 2

    检查Objective-C块类

  3. 3

    Objective-C如何强制子类实现方法?

  4. 4

    如何在Realm中实现继承(iOS,Objective C)

  5. 5

    如何使用Objective-C实现可链接语法?

  6. 6

    将Swift闭包作为属性存储在Objective-C类中,其中使用typedef声明该块

  7. 7

    如何在不定义新类的情况下在 Swift 中实现 Objective-C

  8. 8

    Objective-C @实现变量

  9. 9

    如何理解Objective-C块的类型?

  10. 10

    如何在Objective C中存储块?

  11. 11

    如何通过GCD在Objective-C中实现可重入锁定机制?

  12. 12

    如何在SWIFT中实现Objective-C回调处理程序?

  13. 13

    如何使用Objective-C将自定义初始化实现公开给接口?

  14. 14

    适用于Objective-C的XMPPFramework。如何实现这样的setphoto方法

  15. 15

    如何与KVC访问器一起使用以实现可变数组Objective-C

  16. 16

    请帮助我了解如何实现Objective-C单例

  17. 17

    如何在Objective-C中为FizzBuzz编写标头和实现文件?

  18. 18

    如何使用Objective-c实现AES PKCS5Padding

  19. 19

    如何实现诸如Feedly之类的动画,在iOS Objective-C中整合新闻应用程序

  20. 20

    如何在带有参数的objective-C中实现swift委托方法?

  21. 21

    如何在类中实现可选属性

  22. 22

    Objective-C中的Singleton类严格实现

  23. 23

    Objective-C如何处理具有相同属性名称的子类和超类?

  24. 24

    如何从类Objective C外部获取和设置私有实例变量/属性?

  25. 25

    在Swift中实现Objective C协议

  26. 26

    Objective-C中的堆栈实现

  27. 27

    在Swift中实现Objective C代码

  28. 28

    Objective-C协议的默认实现

  29. 29

    Java到Objective-C RSA的实现

热门标签

归档