> On 8 Jun 2015, at 06:14, Greg Parker <gpar...@apple.com> wrote:
> 
> 
>> On Jun 6, 2015, at 2:43 AM, Roland King <r...@rols.org> wrote:
>> 
>> 
>> 
>> public class RDKBLEService : NSObject
>> {
>>      let peripheral : CBPeripheral
>> 
>>      public init( peripheral: CBPeripheral )
>>      {
>>              self.peripheral = peripheral
>>      }
>> }
>> 
>> It’s a designated initialiser, there’s a superclass (NSObject) but the 
>> initialiser doesn’t call a designated initialiser of the superclass. 
>> According to the rules I was just re-re-re-reading about Swift 
>> initialisation, it’s required to call a superclass designated initialiser 
>> from your derived class. I was looking to see if I could find an exception 
>> to the rule which this fell under but can’t. 
> 
> There is an exception in the designated initializer rule: if your superclass 
> is NSObject then you may omit the call to -[NSObject init]. The compiler 
> knows that -[NSObject init] does nothing, so it allows this as a performance 
> optimization.
> 
> NSObject Class Reference:
>    "The init method defined in the NSObject class does no initialization; it 
> simply returns self."
> There is lots of existing code that would break if we changed that, so we 
> can't even if we wanted to.
> 

Seems not to matter if it’s NSObject or not, appears to be subclassing any 
class with one and only one no-arg initializer gets one implicitly synthesized 
in for you. This is Swift we’re talking about in this case, not obj C by the 
way. eg this compiles too even though Y’s init doesn’t have a super.init() call 
in it per the documented Swift rules. 

import Cocoa

class X
{
        let i : Int

        init()
        {
                i = 123
        }
}

class Y : X
{
        let j : Int

        init( jj : Int )
        {
                j = jj
        }
}



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to