Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-818

Make CDVViewController also implement initWithNibName

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 1.7.0
    • 1.8.0
    • cordova-ios
    • None

    Description

      I just got caught upgrading from 1.5.0 to 1.7.0 by this. I extend CDVViewController, but I also use a nib file. The behaviour I was seeing was that the app would crash shortly after startup. When I used Zombie's in Instruments I could see that the CDVLocalStorage class was being allocated and then de-allocated straight away and the EXC_BAD_ACCESS error would be thrown by something trying to access it later on.

      After a long time debugging I realised that the init method was not being called on the CDVViewController because I was being initialised from a nib and hence:

      -(id) initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

      was being called. Because init was not being called the commandDelegate was not set and hence the line which allocated the CDVViewController to registerPlugins would be doing it on a nil object. If initWithNibName was implemented and just invoked init() this would solve this issue and hopefully not let others extending CDVViewController get caught out either

      Attachments

        Activity

          People

            shazron Shazron Abdullah
            mattgoldspink Matt Goldspink
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: