title: Initializing a constant that's value takes a completionBlock argument in its initializer
body: <p>I have a property, that in Objective-C I created like this:</p>
  
  <pre><code>self.myProperty = [[MyClass alloc] initWithCompletionBlock:^(MyClass *object) {
     dispatch_async(dispatch_get_main_queue(), ^{
         [self doSomethingAfterInitialization];
     });
  }];
  </code></pre>
  
  <p>And it worked great. Initialization of the MyClass object could create an indeterminate amount of time, so I passed a completionHandler in to it. When it finished, doSomethingAfterInitalization: would handle business.</p>
  
  <p>Now in Swift, I'm trying to create the same object and assign it to a property, with problems.</p>
  
  <p>The property never will change, so it makes sense to me to create it as a Swift constant.</p>
  
  <p>So I'm trying it like this:</p>
  
  <pre><code>let myProperty = MyClass(completionBlock:{ (MyClass) -&gt; (Void) in dispatch_async(dispatch_get_main_queue(), doSomethingAfterInitialization())})
  </code></pre>
  
  <p>To me that seemed like a direct translation... but the Swift compiler tells me that's not correct, via the error</p>
  
  <blockquote>
    <p>Use of instance member 'doSomethingAfterInitialization' on type 'MyViewController'; did you mean to use a value of type 'MyViewController' instead?</p>
  </blockquote>
  
  <p>Well that didn't help much. So instead I tried changing the call to the doSomethingAfterInitialization function to self. doSomethingAfterInitialization(), in which case I see</p>
  
  <blockquote>
    <p>Value of type '(NSObject) -> () -> TodayWidgetTableViewController' has no member 'doSomethingAfterInitialization'</p>
  </blockquote>
  
  <p>Any idea how I can fix this? Obviously my initializer is a little weird in the first place, so I'm wondering if this is something that doesn't really translate at all to Swift.</p>