Check for Nil Edit on GitHub

Remember: +new can always return nil. ComponentKit adopts the convention that a component may return nil from +new to signal that it has no data to render.

This is important when you are implementing +new; you must check if [super +new...] returned nil before assigning to ivars.

@implementation MyComponent
{
  NSString *_name;
}

+ (instancetype)newWithName:(NSString *)name
{
  MyComponent *c = [super newWithComponent:...];
  c->_name = [name copy]; // Crashes if c is nil
  return c;
}

Instead:

+ (instancetype)newWithName:(NSString *)name
{
  MyComponent *c = [super newWithComponent:...];
  if (c) {
    c->_name = [name copy];
  }
  return c;
}

(This is somewhat analogous to the usual pattern for implementing -init, where you check if [super init...] returns nil.)