Logo

    115: Do the Weak-Strong Dance

    en-usJuly 27, 2016
    What was the main topic of the podcast episode?
    Summarise the key points discussed in the episode?
    Were there any notable quotes or insights from the speakers?
    Which popular books were mentioned in this episode?
    Were there any points particularly controversial or thought-provoking discussed in the episode?
    Were any current events or trending topics addressed in the episode?

    About this Episode

    Discussion - Allocations and Leaks instruments Extraordinarily hard to spot Tough to find offending code without help from tools Unbounded Memory Growth (memory growth without a chance to collect (deallocate) memory True Leaks (retain cycles) Allocations Generation Analysis Tracks allocations still resident when the generation is marked - As you do multiple generations you will see only the new allocations since the last generations Simulate Memory Warning (did it help, do you have anything observing for this?) I have unbounded memory growth, now what? - Look for the biggest offenders (sorting) - Drill into the code and look for ways to release unnecessary allocations Good ‘ol fashion memory management If you’re intentionally holding onto objects, consider implementing an observer for UIApplicationDidReceiveMemoryWarningNotification to release them Leaks / Retain Cycles aka. Strong Reference Cycles Persistent vs. Transient Static Code Analyis Narrow list to your code Use / Observe (detective work) “You’re in the ballpark” now what? Reference counting Weak and Unowned Closure example with capture list; weak and unowned Apple says, “Use a weak reference whenever it is valid for that reference to become nil at some point during its lifetime. Use an unowned reference when you know that the reference will never be nil once it has been set during initialization.” Picks Darryl Visual Debugging with Xcode WWDC 2016 Session 410 demonstrates the use of the new Memory Graph Debugger starting at about 24 minutes in John "Weak, Strong, Unowned, Oh My!" - a Guide to References in Swift by Hector Matos

    Recent Episodes from iOhYes

    120: Force Quit

    120: Force Quit
    Thanks to all of our listeners, sponsors, former guests and hosts and to Dan and Haddie and the rest of the 5by5 network. This will be our last episode. We hope you've enjoyed the series as much as we've enjoyed producing it.

    119: Wobble

    119: Wobble
    Discussion: tvOS Development with special guest Mark Sands Recreating the Parallax effect 3D transform Sheen (Glossy effect) Shadow Wobble Top Shelf Extension on tvOS Open Source project Re:Lax on GitHub CAR Files Compiled asset catalog Theme Engine from Alex CAR file inspector Bill of Materials Tree graph structure Folklore.org Stories from Andy Hertzfeld about his life on the original Macitosh project tvML Blog post - tvOS App Development Changes by Jared Sinclair Special Shoutout to Mark’s collaborated on this project James Rantanen

    118: Dependencies All the Way Down

    118: Dependencies All the Way Down
    Discussion: Your App Build Pipeline Dependency management Carthage Punic - Clean room implementation of Carthage CocoaPods SPM Build systems CircleCI Travis XCTool from Facebook Xcode Server Are you using it? Let us know @iohyespodcast Darryl's Pick Punic, Clean room implementation of Carthage

    117: Twenty Out Of Twenty Is Bad

    117: Twenty Out Of Twenty Is Bad
    Discussion: Energy Profiler For more info see Ep. 104, Power Struggles Apple really wants us to be good citizens of the battery. Apps that quickly drain the battery will be shunned by users Remember the Facebook background audio “bug” (some say ploy to allow the fb app to stay alive in background) “App as patient” metaphor iOS Energy Gauge / Energy Report provides a high-level overview of energy usage as you test your app Energy logging on phone Good for long periods of data collection Energy Instrument for best results, target an iOS device wirelessly (I wasn’t able to get this working because you need Bonjour and multicast enabled on your wireless network access point) 20 / 20 is bad, 1 / 20 is good Energy experts at Apple recommend Do it never (Do it less) Do it later Use the background activity scheduler APIs Do it more efficiently Picks John This Week in Swift from Natasha the Robot

    116: Jittery Moment

    116: Jittery Moment
    Discussion: Time Profiler But first: a brief rundown of the Instruments UI Toolbar Record/Stop Pause Target Selection Status display Strategy Selection CPU data Instrument data Thread data Detail/inspector toggles Timeline Plots data along the time your app was sampled Can be filtered and zoomed Disclosure arrow can toggle display of just the current run or of all runs in the trace document Detail Contents vary by Instrument, but this will generally be a table with some representation of the sampled data Inspectors Record Settings Display Settings Extended detail (often the heaviest stack trace) What is Time Profiler? An Instrument providing sample-based analysis of an application’s activity Periodically samples the call stack to determine where an app is spending its time These are instantaneous samples. They don’t track the duration of a function call, but rather how many times when sampled was the application currently in said function call. No distinction between a fast function called many times and a slow function called few times Extremely fast functions may not get sampled at all, if they happen to occur in between samples Provides a detail view listing call trees, optionally separated by thread and/or state, allowing the developer to drive down into calls to identify areas that may need to be optimized Weight - Percentage of samples in which a function appeared and an aggregate summary of samples (count * sample interval) Self Weight - Aggregate summary of samples in which the function was at the top of the call stack Symbol Name - The thing represented in the current row (may be a function, method, closure/block, thread, or app) Category Additional columns available: Count Self Count Library Picks John SelfControl Darryl WWDC 2016 Session 418 - Using Time Profiler in Instruments Alternative show title suggestions Try harder n squared complexity my code, vs not my code expected or unexpected notion of runs

    115: Do the Weak-Strong Dance

    115: Do the Weak-Strong Dance
    Discussion - Allocations and Leaks instruments Extraordinarily hard to spot Tough to find offending code without help from tools Unbounded Memory Growth (memory growth without a chance to collect (deallocate) memory True Leaks (retain cycles) Allocations Generation Analysis Tracks allocations still resident when the generation is marked - As you do multiple generations you will see only the new allocations since the last generations Simulate Memory Warning (did it help, do you have anything observing for this?) I have unbounded memory growth, now what? - Look for the biggest offenders (sorting) - Drill into the code and look for ways to release unnecessary allocations Good ‘ol fashion memory management If you’re intentionally holding onto objects, consider implementing an observer for UIApplicationDidReceiveMemoryWarningNotification to release them Leaks / Retain Cycles aka. Strong Reference Cycles Persistent vs. Transient Static Code Analyis Narrow list to your code Use / Observe (detective work) “You’re in the ballpark” now what? Reference counting Weak and Unowned Closure example with capture list; weak and unowned Apple says, “Use a weak reference whenever it is valid for that reference to become nil at some point during its lifetime. Use an unowned reference when you know that the reference will never be nil once it has been set during initialization.” Picks Darryl Visual Debugging with Xcode WWDC 2016 Session 410 demonstrates the use of the new Memory Graph Debugger starting at about 24 minutes in John "Weak, Strong, Unowned, Oh My!" - a Guide to References in Swift by Hector Matos

    114: It's All Unified

    114: It's All Unified
    Discussion - Notifications in iOS 10 Brief breakdown of WWDC sessions related to notifications What’s New in the Apple Push Notification Service Introduction to Notifications Advanced Notifications New stuff APNS Token-based authentication UserNotifications (and UserNotificationsUI) Framework (Unifies Remote and Local Notifications) Access to user-defined notification settings Expanded content Titles Subtitles Media attachments Scheduling and handling within Extensions In-app presentation Removal/update of pending notifications Dismissal actions Service Extensions APNS Token-based authentication Uses JSON Web Tokens (libraries widely available to assist with token generation) For server-side solutions where using a certificate isn’t practical/feasible Addresses issue of certificate expiration (though tokens also expire, new ones can be generated on the fly) UserNotifications Framework Provides a single notifications API across iOS, watchOS and tvOS iOS: Full support for scheduling and management of notifications watchOS: Support for forwarded notifications and local notifications on the watch tvOS: Support for badging app icons Key components/concepts: UNUserNotificationCenter Authorization requests Scheduling via requests (by providing content and triggers) UNNotificationRequest Identifier Content Trigger UNMutableNotificationContent UNNotificationAttachment Audio Images Video Triggers Push (UNPushNotificationTrigger is not instantiated by apps) UNTimeIntervalNotificationTrigger UNCalendarNotificationTrigger UNLocationNotificationTrigger UNUserNotificationCenterDelegate Protocol userNotificationCenter:willPresentNotification:withCompletionHandler: userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler UNNotificationCategory - defines a type of notification, allows actionable notifications and content extensions UNNotificationAction - represents a task you can perform in response to a notification UNNotificationServiceExtension - Entry point for service extensions. Allows you to process the payload of a push notification before it is presented (eg: end-to-end encryption or notification attachments). Use in conjunction with “mutable-content: 1” in the aps portion of an APNS payload. UserNotificationsUI Framework Provides the UNNotificationContentExtension protocol View controllers adopt this protocol, using the VC’s view to display the notification contents Custom content is sandwiched between a header with the application icon and title and the default notification payload (default payload can be hidden using an attribute in the Info.plist) No user interaction Actions are displayed and extensions can respond to them by intercepting action responses Protocol provides a didRecieveNotification: method you can use to set up UI in response to the notification Picks Darryl New Swift, Core Data and Cocoa Books - Use Your Loaf John List of Public Slack Groups Mr Robot returns to USA Network July 13

    113: Qualified Yeses

    113: Qualified Yeses
    John and Darryl recap and grade their WWDC wish-lists and discuss changes to the Human Interface Guidelines for iOS. WWDC Wishlist Scorecard John Get serious about home automation, maybe make Apple TV an automation hub (Half Credit) Siri as a Service (3rd party integration) (Yes) Refactoring for Swift (in Xcode) (No) Announce date to sunset Obj-C (No) Xcode for iPad Pro (Half Credit) Darryl More voice command vocabulary. Something like AppleScript (Half Credit) Make Buttons Great Again (Quarter Credit) Better accessibility hierarchy visualization tools built into Xcode (Three Quarters Credit) Additional accessibility tools for checking things like color contrast. (TBD) Improved dynamic font API (Yes, but not what I’d hoped for) Upgrade pricing/trials (No: but we got clarification on subscriptions on The Talk Show) Faster watch app loading. A way of deferring the most expensive parts? (Yes!) Simulators and Xcode bots for Linux? (Lol) iOS 10 HIG Changes Widgets Available on “Search” and above “Quick Action List” when you 3D touch an icon on Home screen Panning/Scrolling not supported Avoid backgrounds / no background images Allow jump to app, but no “Open App” button. Allow interaction via content Messages Can now integrate with Message by providing a messaging extension Content with Focus and Value Constrained space Simple/Intuitive interface Integration with Siri Don’t Advertise Impersonate Siri Do Minimize visual/touch interactions Respond quickly Take people directly to content Improve accuracy via custom vocabulary Provide example requests Expanded Notifications Detail view Actions that make sense There be dragons, destructive actions Picks Darryl Auto Adjusting Fonts for Dynamic Type Build Phase John Audio-Technica ATH-ANC7B QuietPoint Active Noise-Cancelling Closed-Back Headphones - Wired Alternative show title suggestions Stuck in my craw Return of bezels Cocoa-isims I hate you I’m not a fun person

    112: Wonderful Whisky Drinking Chat 2016

    112: Wonderful Whisky Drinking Chat 2016
    Darryl and Nolan are joined by Amro Mousa and Matt Massicotte to discuss the WWDC 2016 Keynote and Developer State of the Union. Also, Whisky. The Whiskies Mars Iwai Tradition Japanese Whisky Amrut Fusion Single Malt Whisky Laphroaig Single Malt Whisky - 10 Year Keynote Pre-keynote observation Hated the music Apple TV Events app worked fine Tim takes the stage Talks about Orlando, offering sypathies. Called it an act of terrorism and hate. Talks about Apple's diversity Stream restarted Moment of silence where there would normally be an energizing video Bill Graham Auditorium 27th WWDC 13 Million Registered devs, growth of 2M y-t-y 72% first-time attendies 2 Million Apps on App Store $50 Billion paid to developers watchOS (Kevin Lynch) Optimizations to App Launch time!!! Instant response in watchOS 3 Apps stay in memory, support background updates App dock replaces contacts! Swipe up is now Control Center Streamlined notification response workflow Scribble! Handwriting (grafitti?) recognition Improved watch faces Minnie Mouse watch face Activity watch face in 3 variants. Acts kinda like a full-screen complication Numerals Improved face switching with edge to edge swipe Demo Time to first woman on stage: approx. 15 minutes Timer improvements Reminders improvements Find my Friends SOS Press and hold side button, and 911 is called after a countdown, notifies emergency contacts withlocation Watch shows Medical ID info Works internationally (calls the right emergency number) Jay (Blahnic?) Activity sharing: allows you to view friends' activity and send messages Support for Wheelchair users Changes algorithms used to detect movement "Time to roll" notification Wheelchair-specific workouts Breath App Simple deep breathing sessions to calm and reduce stress Supports reminder notifications 1 to 5 minute sessions Supports haptic feedback Summary with time and heart rate New APIs In-app Apple Pay Background workout info SpriteKit & SceneKit Native Events Speaker Audio Inline video Game Center Preview available today, release in Fall tvOS (Eddy Cue) 1300 Video Channels 6000 Apps New Remote App! w/ all the features of the physical remote Siri Search Movies by topic Search YouTube! Live Tune-In ("Watch ESPN 2") iPad and AppleTV Better authentication with Single sign-on Also available on iOS Dark Mode ReplayKit PhotoKit HomeKit Multiplayer Game sessions and more controller support OS X (now macOS) (Craig) Sierra Continuity AutoUnlock - proximity-based unlock of Mac Universal Clipboard iCloud Drive 10 Billion documents today Desktop syncing (and available on iOS) Storage optimization (purges recoverable/unneeded files) Apple Pay on the web Authenticates using TouchID on iPhone Tabs System-wide support for tabs for all multi-windowed apps Picture in Picture Siri Siri button/icon on dock File search with filterable results 200% more snark Result pinning Craig doesn't blink at paying $140 for movie tickets Developer preview today, public beta in July, Release Fall iOS Biggest iOS release ever Experience Redesigned lock screen Raise to wake a la watchOS Notification redesign 3d touch on notifications Rich notification content Clear all Quicker access to camera, widgets and control center 3d touch now supports display of widgets from app icons Siri 2 Billion requests a week Developer API!!! Messaging Slack WhatsApp WeChat Photosearch Workouts Payments VoIP calling Sounds like it's not a complete opening QuickType Intelligent keyboard Deep learning (LSTMs) for completion suggestions Example: "Where are you?" provides option to send location Contextual event creation Photos Places map view Face recognition Object and scene recognition Memories clusters photos into collections that may be relevant Automatically creates a slideshow movie of photos and videos Provides length and mood controls to change editing and music of movie Also on macOS Maps Proactive destinations Destination filtering Continued use of carosel (like the Memories stuff) Accessibility impact? Destinations along your route Alternative routes with time-saving estimations CarPlay gets instrument panel turn-by-turn Map Extensions!! Book Reservations Request a ride Music 15 Million paid subscribers All new design Clarity and simplicity Improved library UI Lyrics Don't make developers participate!!! News 2000 publications, 60 million readers Redesigned For you is categorized, with smart topics Subscriptions Breaking news notifications HomeKit Home app Access to scenes and individual accessory control Integrated into control center Interactive notifications iPhone, iPad, Watch Phone Voicemail Transcription (Kinda like Google Voice) Extension API (detect spam, etc) VoIP API! Side note: https://twitter.com/chockenberry/status/742422670046683137 (Buttons look more like buttons) Messages Most-frequently used app on iOS Rich links Different camera and photo picker. Big emoji (shit) Emojifier Bubble effects Tap-back quick responses Handwriting Digital touch Fullscreen effects Annoying demo https://twitter.com/_DavidSmith/status/742425105809039360 iMessage Apps Stickers Annoying photo manipulation Payment Can I block Jibjab? Differential privacy One more thing: a video :( Developer preview Today, public beta July, release Fall Developers (Tim) Swift playgrounds on iPad (get insight from Amro re: hour of code with his 6 yr old) Developer keyboard Released today with the beta Free First "emotional" Apple video in a while to actually make me emotional Developer State of the Union iMessage Apps Extensions App Store iMessage App Store "Get app" link Sticker art, UIKit Display in the same space as the keyboard would, but can be expanded to fullscreen MSSession, MSConversation, MSMessage Privacy measures Simulator support for viewing both sides of a conversation Siri SiriKit (first version) Speech, Intent, Action, Response Vocabulary Plist for app vocabulary, code for user vocab AppLogic, User Interface Extension, NSUserActivity Example: Hologram Domain, Intent, Recipent, Content Swift 3 Swift on iPad File Format Docs Lesson materials Record sessions Compatible with Xcode playgrounds Xcode 8 Source Editor Active line highlighting Swift color literals Swift image literals Markup generation App Extensions Selection Transforms Pasteboard modification Unified API Reference Fully available offline Interface Builder Design-time effects Device size configuration bar Improved size-class support Canvas operations at any zoom level!! Captured crash logs Test without building Runtime issues UI Threads Thread sanitizer Identify race conditions and more Memory Display object graph Identifies leaks with backtraces to where captures happen Reference Cycle graph Provisioning New signing actions Configuration and issue details Actionable messages Provisioning report Automatic code signing with a dedicated profile Customized code signing per build configuration Platform Compression Open-sourcing lczse Traffic prioritization Logging Unified Levels In memory trace Privacy New console application File Systems HFS+ 18+ years old Apple File System Scalable Modern Flash/SSD Resilient 64-bit Encryption Cloning (copy on write) Fast Zero space File and directories Snapshots Full volume Mountable Supports reverting Coming "Soon". Not specified Differential Privacy Adds noise to individual responses so that individual responses can't be identified Privacy budget limits submissions per period iOS Share app from homescreen via 3D touch Activity based integration Extensions Notifications Service Extension Modifies push payload before notification surfaces. Allows encryption or additional content downloads. Content extensions Widgits New vibrant look Additional compact size iCloud available to all signed apps on macOS Sierra, not just App Store CloudKit Sharing Allows control over who can access data CKShare class governs permissions watchOS Glanceable Actionable Responsive Glances are no longer "necessary" Workout apps run continuously during a workout even with screen off or when in another app Raw access to crown events Gesture recornizers Gyroscope Complications gallery SceneKit/SpritKit tvOS Talking about stuff we already knew, but which wasn't discussed in WWDC2015 Focusable elements TVMLKit Handoff Multipeer connectivity 4 simultaneous game controllers Updated controller policy: can require game controllers Graphics Color Wide Color (P3) gamut APIs Sharing PDF/print System apps Cameras capture deep color API to access DNGs API to capture LivePhotos Metal Games ReplayKit streaming GameCenter invitations via sharing GameCenter sessions GameplayKit Picks Matt: Human Resource Machine Amro: Provenance

    111: Make Buttons Great Again

    111: Make Buttons Great Again
    Discussion - WWDC Wish List John Get serious about home automation, maybe make Apple TV an automation hub Siri as a Service (3rd party integration) Refactoring for Swift (in Xcode) Announce date to sunset Obj-C Xcode for iPad Pro Darryl More voice command vocabulary. Something like AppleScript dictionaries? Make Buttons Great Again Better accessibility hierarchy visualization tools built into Xcode Additional accessibility tools for checking things like color contrast. Improved dynamic font API, better support for font replacement in IB Upgrade pricing/trials Faster watch app loading. A way of deferring the most expensive parts? Simulators and Xcode bots for Linux? Past Wish Lists WWDC 2015 New Year’s 2016 Picks Darryl Samuel Ford’s Blog - Discovered as a part of the Swift dynamism conversation. Pretty good stuff. John Multi-Client monitor from Dell
    Logo

    © 2024 Podcastworld. All rights reserved

    Stay up to date

    For any inquiries, please email us at hello@podcastworld.io