![]() Session 116 – Students-Packets of Pure Power.Session 115 – Getting Started with Cocoa Bindings.Session 114 – Developing for UNIX on Mac OS X.Session 112 – From Power On to Login – Inside the Mac OS X Leopard Boot Process. ![]() Session 111 – Managing Schema Versioning and Data Migration in Your Core Data Application.Session 109 – Code Hardening Techniques.Session 108 – Mac OS X File Systems – A Walkthrough For Developers and IT Professionals.Session 107 – Students - Getting the Most out of WWDC.Session 106 – Fundamentals of Kernel Debugging.Session 105 – Optimizing Your Core Data Application.Session 104 – Getting Started with Mac OS X Kernel Programming.Session 103 – Getting Started with Core Data.Session 102 – Threading for Performance Using OpenMP and Intel Threading Building Blocks.Session 101 – Coming to the Mac OS X Platform – Part 2 – Frameworks, APIs and Tools.Session 100 – Coming to the Mac OS X Platform – Part 1 – The Mac OS X Architecture.The archive is also available in new-line delimited JSON format here.This archive would not be possible without its initial links so credits and thanks to IsaacXen. You can find more links for WWDC sessions on this gist by IsaacXen.Recent WWDC session videos can be found directly on Apple Developer website.Unfortunately, some of the sessions do not have a link since they are not currently published by Apple.The videos are hosted by Apple so you may need to login with your Apple Developer account to be able to view or download them.If we want to write a generalized sort or binary search, we need a way to compare 2 elements.This archive of WWDC sessions is meant to extend the current collection of videos available on Apple Developer website with all the sessions prior to WWDC 2017 that are not available there but continue to be hosted by Apple servers. This is why Cocoa programmers increasingly use the delegate pattern. For example, they might not use final and they might not account for a method being overwritten. We also need to do this without breaking any of the superclass's invariants.įinally, it's natural for authors to write their code as if they know what to override (and more importantly, what not to override). What if our superclass had stored properties? We have to accept them, and we have to initialize them even if we don't need them. We also have to choose our superclass at the moment that we define our class, not later in some extension. What if we want to model multiple abstractions? For example, what if our class wants to be a collection and be serialized? We can't if both Collection and Serialized are classes.Ĭlasses also get bloated as everything that might be related gets thrown together. Class inheritance is too intrusiveĬlass inheritance is monolithic-we get only 1 superclass. ![]() The collection we are iterating over and the one we are modifying are distinct. This does not apply to Swift because all Swift collections are value types. Some enumerators may currently allow enumeration of a collection that is modified, but this behavior is not guaranteed to be supported in the future. It is not safe to modify a mutable collection while enumerating through it. One effect of implicit sharing on Cocoa platforms: Programmers can defensively make copies of data, but that leads to inefficiency.Īlso, modifying data from different threads can lead to race conditions, and defensively adding locks leads to further inefficiency + deadlocks.Īll of this leads to further complexity-in a word, bugs. A and B share some data, but A cannot modify this data without affecting B: Subclasses can reuse difficult logic while maintaining open-ended flexibility. The subclass can then override this customization point. The magic happens when the author breaks out a small part of that operation into a separate customization point. Inheritance Hierarchies Customization points and reuseĪ superclass can define a function, and subclasses get that functionality for free. We can do all of the above with structs and enums too. Find out how you can apply these ideas to improve the code you write.Īccess control, abstraction, and namespacing help us manage complexity. Each of these concepts benefit predictability, performance, and productivity, but together they can change the way we think about programming. Description: At the heart of Swift's design are two incredibly powerful ideas: protocol-oriented programming and first class value semantics.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |