我想知道是否可以在Objective-C中存储对匿名函数(块)的引用作为实例变量.

我知道如何使用授权、目标行动等.我不是在说这个.

推荐答案

当然

typedef void(^MyCustomBlockType)(void);

@interface MyCustomObject {
  MyCustomBlockType block;
}
@property (nonatomic, copy) MyCustomBlockType block; //note: this has to be copy, not retain
- (void) executeBlock;
@end

@implementation MyCustomObject
@synthesize block;

- (void) executeBlock {
  if (block != nil) {
    block();
  }
}

- (void) dealloc {
  [block release];
  [super dealloc];
}
@end

//elsewhere:

MyCustomObject * object = [[MyCustomObject alloc] init];
[object setBlock:^{
  NSLog(@"hello, world!");
}];

[object executeBlock];
[object release];

Objective-c相关问答推荐

目标 C:什么是(id)发件人?

在 Objective-C 中完成受保护属性的解决方法

TWTweetComposeViewController 在 IOS6 中已弃用

来自 NSDate 的日期名称?

在 Objective-C 中实现纯虚方法

dispatch_get_global_queue 和 dispatch_queue_create 有什么区别?

NSFileManager 唯一的文件名

setFont 已弃用?

反编译 Objective-C 库

Objective C 静态类变量

检测设备是否支持电话?

类在两者中都实现.将使用两者之一

从 UIPageViewController 中移除视图控制器

如果目录不存在,是否有更安全的方法来创建目录?

如何在 ios 8 的 alertview 中添加文本输入?

Objective-c 中 SEL 类型的属性

Xcode - 如何将 XIB 连接到 ViewController 类

Xcode 警告未使用属性访问结果 - getter 不应用于副作用

Xcode 在调试时判断表达式

Unwind Segue 在 iOS 8 中不起作用