I've got an initializer that takes a block. I'd also like a convenience initializer that doesn't require the block, and instead uses a global default instance of the block:

`ABCDef.m`:

```
#import "ABCDefaultReader.h"

@implementation ABCDef {
  NSString *(^_reader)(NSString *name);
}

- (instancetype)initWithReader:(NSString *(^)(NSString *name))reader {
  self = [super init];
  if (self) {
    _reader = reader;
  }
  return self;
}

- (instancetype)init {
  // ABCDefaultReader imported from ABCDefaultReader.h
  return [self initWithReader:ABCDefaultReader];
}

```

`ABCDefaultReader.h`:

```
extern NSString *(^ABCDefaultReader)(NSString *name);

```

`ABCDefaultReader.m`:

```
#import "ABCDefaultReader.h"

extern NSString *(^ABCDefaultReader)(NSString *name) = ^NSString *(NSString *name) {
  // ...
}

```

This fails to build because `'extern' variable has an initializer` (I'm using `-Werror`):

```
ABCDefaultReader.m:3:36: error: 'extern' variable has an initializer [-Werror,-Wextern-initializer]
extern NSString *(^ABCDefaultReader)(NSString *name) = ^NSString *(NSString *name) {
                                                        ^
1 error generated.

```

1. Why is it a problem to have an initializer?
2. What's a good way to have a default, constant block defined in a separate file, and referenced from my implementation class?