Hey Brad
+1 I think this will make delegate controller pattern a lot more clean and
readable.
I was thinking about other areas where this can be useful, and I thought it
will be great for property injection from parent controller to children.
class ParentController{
protocol Injection: class{
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?){
let childVC = segue.destinationViewController as? Injection
...
}
}
class ChildController: ParentController.Injection{
}
Does this make sense?
-Krishna
> On Apr 28, 2016, at 10:45 PM, Brad Hilton via swift-evolution
> <[email protected]> wrote:
>
> Type nesting allows some convenient and straightforward semantics that we see
> inside the Swift standard library such as views on String like
> String.CharacterView, String.UnicodeScalarView, etc. However a protocol
> cannot be nested in a type and gives a non-obvious error that the
> “Declaration is only valid at file scope.” Just as other nested types allow
> proper contextual scoping, a nested protocol could make a lot sense for a
> number of patterns. For example, there are many “Delegate” protocols
> throughout the Cocoa frameworks. Here’s a controller/delegate pattern before
> and after type nesting:
>
> // Without type nesting
>
> protocol MyControllerDelegate : class {
>
> }
>
> class MyController {
>
> weak var delegate: MyControllerDelegate?
>
> }
>
> // With type nesting
>
> class MyController {
>
> weak var delegate: Delegate?
>
> protocol Delegate : class {
>
> }
>
> }
>
> Though the change is mostly semantics, it does allow an explicit association
> between My Controller and the Delegate instead of only a named association.
> It also cleans up the module name space like other nested types and makes
> associated protocols more discoverable in my opinion.
>
> I’d love to hear everyone’s thoughts.
>
> Brad Hilton
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution