Alright, having an odd problem, my polyline that is set as an overlay for my map shows up fine unless I try to access an enumerated variable in the rendererForOverlay method.
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
if ([overlay isKindOfClass:[MKGeodesicPolyline class]]) //If I change MKGeodesicPolyline to my subclass it won't render the overlay.
{
    CustomLine *poly = (CustomLine *)overlay;
    MKPolylineRenderer *renderer = [[MKPolylineRenderer alloc] initWithPolyline:(CustomLine *)overlay];
    //[poly testFunction]; //This will also cause overlay to not show
    //If I uncomment this it will cause the overlay to not show
    /*
    if (*poly.linecheck == Clear)
    {
        NSLog(@"Overlay should be red");
        renderer.strokeColor = [NSColor greenColor];
    }
    if (*poly.linecheck == Bad)
    {
        NSLog(@"Overlay should be green");
        renderer.strokeColor = [NSColor redColor];
    }
    */
    renderer.strokeColor = [NSColor redColor];
    //NSLog(@"polyline.linecheck %u",*poly.linecheck); //if this is uncommented it will also break the overlay.
    renderer.lineWidth = 3.0;
    return renderer;
}
return nil;
Here is my custom polyline's header.
#import <MapKit/MapKit.h>
enum linecheck
{
    Clear,
    Bad
};
@interface CustomLine : MKGeodesicPolyline
{
}
@property (readwrite) enum linecheck *linecheck;