Stack Exchange
Customize Unity3D Xcode project with storyboards
I'm a novice on Unity3D. My requirement is to have the the gaming screen (build by Unity3D) in between iOS native application. 
I have written .mm in oder to subclass UnityAppController.mm
#import <UIKit/UIKit.h>
#import "UnityAppController.h"

@interface TNAppController : UnityAppController

- (void)createViewHierarchyImpl;

@end

@implementation TNAppController

- (void)createViewHierarchyImpl {

    UIStoryboard *storyBoard    = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
    UIViewController *mainVC    = [storyBoard instantiateInitialViewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = mainVC;
    _rootController             = [self.window rootViewController];
    _rootView                   = _rootController.view;
}

@end

IMPL_APP_CONTROLLER_SUBCLASS(TNAppController)

But when I tried assigning the _rootView got following error.

2015-01-29 18:21:53.298 ProductName[548:60b] -> registered mono
  modules 0x136b0c0
  -> applicationDidFinishLaunching() Mono path[0] = '/var/mobile/Applications/A7836E0B-2F4B-4704-B359-63A7C860CB07/ProductName.app/Data/Managed'
  Mono config path =
  '/var/mobile/Applications/A7836E0B-2F4B-4704-B359-63A7C860CB07/ProductName.app/Data/Managed'
  -> applicationDidBecomeActive() Requesting Resolution: 640x1136 Renderer: PowerVR SGX 543 Vendor:   Imagination Technologies Version: 
  OpenGL ES 2.0 IMGSGX543-97 GL_OES_depth_texture GL_OES_depth24
  GL_OES_element_index_uint GL_OES_fbo_render_mipmap GL_OES_mapbuffer
  GL_OES_packed_depth_stencil GL_OES_rgb8_rgba8
  GL_OES_standard_derivatives GL_OES_texture_float
  GL_OES_texture_half_float GL_OES_texture_half_float_linear
  GL_OES_vertex_array_object GL_EXT_blend_minmax
  GL_EXT_color_buffer_half_float GL_EXT_debug_label GL_EXT_debug_marker
  GL_EXT_discard_framebuffer GL_EXT_draw_instanced
  GL_EXT_instanced_arrays GL_EXT_map_buffer_range
  GL_EXT_occlusion_query_boolean GL_EXT_pvrtc_sRGB
  GL_EXT_read_format_bgra GL_EXT_separate_shader_objects
  GL_EXT_shader_framebuffer_fetch GL_EXT_shader_texture_lod
  GL_EXT_shadow_samplers GL_EXT_sRGB GL_EXT_texture_filter_anisotropic
  GL_EXT_texture_rg GL_EXT_texture_storage GL_APPLE_copy_texture_levels
  GL_APPLE_framebuffer_multisample GL_APPLE_rgb_422 GL_APPLE_sync
  GL_APPLE_texture_format_BGRA8888 GL_APPLE_texture_max_level
  GL_IMG_read_format GL_IMG_texture_compression_pvrtc  Creating
  OpenGLES2.0 graphics device Initialize engine version: 4.6.1f1
  (d1db7a1b5196) Begin MonoManager ReloadAssembly
  - Completed reload, in  0.072 seconds

Followed the tutorial in http://www.the-nerd.be/2014/08/06/add-unity3d-in-a-native-ios-application/
Noticed the _rootViewController is garbage collected when it comes to the transitionToViewController method in UnityAppController.mm which throws as a bad access.
Any experience on such?
Thanks a bunch!

You might want to remove the (this is harmless) messages from the error message you have, because as it is now. I can not even find a error message in the massive pile of text

Apologies! Hope now it helps..

please post errors as text, you can just copy & paste the call stack and code fragment separately. Images become hard to read.

Try to change [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; to [UIStoryboard storyboardWithName:@"Main" bundle:nil];

this code, work fine for me:
#import <UIKit/UIKit.h>
#import "UnityAppController.h"
#import "UI/UnityView.h"
#import "UI/UnityViewControllerBase.h"

#import "TopViewController.h"

@interface TNAppController : UnityAppController

@property (nonatomic, strong) UINavigationController *navController;

- (void)willStartWithViewController;

@end

@implementation TNAppController
- (void)willStartWithViewController:(UIViewController*)controller {

    UIStoryboard *storyBoard    = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *mainVC    = [storyBoard instantiateInitialViewController];

    _rootController    = [[UnityDefaultViewController alloc] init];
    _rootView        = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _rootController.view = _rootView;

    //UnitySceneViewController *unityScene = [[UnitySceneViewController alloc] initWithNibName:nil bundle:nil];

    self.navController = [[UINavigationController alloc] initWithRootViewController:mainVC];
    [_rootView addSubview:self.navController.view];

    /*
    UIStoryboard *storyBoard    = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *mainVC    = [storyBoard instantiateInitialViewController];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = mainVC;
    _rootController             = [self.window rootViewController];
    _rootView                   = _rootController.view;
    */
}

@end

IMPL_APP_CONTROLLER_SUBCLASS(TNAppController)

