> On 25 Nov 2015, at 16:30, Andreas Mayer <andr...@harmless.de> wrote:
> 
> 
>> Am 25.11.2015 um 08:56 schrieb Quincey Morris 
>> <quinceymor...@rivergatesoftware.com>:
>> 
>>> That's explained in "Using Swift with Cocoa and Objective-C":
>>> 
>>> "The compiler does not automatically insert the @objc attribute for 
>>> declarations marked with the private access-level modifier.”
>> 
>> That can’t be the full explanation, because the other private method doesn’t 
>> produce an error, Roland said.
> 
> I can't replicate that behavior.
> 
> This doesn't work:
> 
> // Roland's protocol must be marked @objc since it has optional requirements.
> 
> @objc public protocol PublicProtocol {
>       func someFunction()
>       // ...
> }
> 
> private class SomeClass: NSObject, PublicProtocol {
>       func someFunction() {
>               // implementation
>       }
> }

here’s my distilled example

import CoreBluetooth
private class Bananas : NSObject, CBCentralManagerDelegate
{
        func centralManagerDidUpdateState(central: CBCentralManager)->Void {
                // do nothing, I care little for your state
        }

        func centralManager(central: CBCentralManager, didRetrievePeripherals 
peripherals: [CBPeripheral])
        {
                // do nothing, you retrieved peripherals, I don't care
        }
}

with the private designator, you get a warning on the second function about 
optionality and @obcj, and an error, not on the first, but on the entire class 
telling you the first function needs to be marked @objc, but not for 
optionality reasons, just says that the candidate is not @objc but the protocol 
requires it. So they both need objc, but for slightly different reasons, and 
the errors are reported in slightly different ways

change it to internal, no errors, no warnings, as now expected

change it to public and you get errors on both functions telling you to make 
them public, also as now expected. 

_______________________________________________

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