Not sure if I know any UIKit engineers on here, but in case I do:
FB24885711
UICollectionViewCell incorrectly has zero default layout margins on iPhone Duo
Swift can now convert Swift closures to 𝚜𝚝𝚍::𝚏𝚞𝚗𝚌𝚝𝚒𝚘𝚗s.
It's very simple in theory; the Swift closure is passed to C++ as a 𝚟𝚘𝚒𝚍* that will be called with a little bit of ptr magic (𝚜𝚠𝚒𝚏𝚝𝚌𝚊𝚕𝚕).
The closure's capture context (aka any values from "outside" the closure that are used "inside" the closure) is also a 𝚟𝚘𝚒𝚍* that will just be passed along.
This is almost exactly how you would bridge a closure/stateful function over to C, with the difference being that in C you would also need a 𝚏𝚛𝚎𝚎(..) function - here we use 𝚜𝚠𝚒𝚏𝚝_𝚛𝚎𝚕𝚎𝚊𝚜𝚎(..)
https://t.co/9yl53UoGMa
Transaction.disablesAnimations = true controls animation per transaction.
Since iOS 14, there is a SwiftUI’s private .unanimatable() modifier which disables animation for a view subtree at the graph level.
NeXTSTEP is such an enigma in the grand scheme of computer history. It’s like the modern equivalent of your nerdiest developers leaving to spend a decade fucking around with low level kernel drivers and UI frameworks that customers don’t understand and sales guys don’t know how to sell. They make no money for years, but they also hard launch the computer animation industry along the way by accident.
Then, on the cusp of irrelevancy, they come back, immediately stop being nerds and go on to lead the greatest product led development cycle in history. Nobody ever remembers Steve Jobs as the object oriented inter-process-communication guy, but he was. He personally hired the original designer of the Mach kernel.
What the hell?
Advanced iOS Hacking: String dumping
It’s simple to get access to the .ipa file of any app on the App Store, which contains this .app bundle (pictured). This is the first port of call for bad actors looking to steal your keys.
With a built-in UNIX command, `strings`, we can inspect every raw string compiled into the executable. Just run `strings Bev` and see the dumped output (also pictured).
As well as raw strings, you’ll also see a ton of symbol names for your compiled functions.
But near the bottom of this list, we see our prize: 12345678-90ab-cdef-1234-567890abcdef
The raw string for our API key, out in the open — easily searchable by any villain handy with a regex.
See the full blog post: https://t.co/5VK15N7L5G
The Xcode 27.2 beta is here and, subsequently, as is the iOS 27.2 SDK.
Despite no device or simulator support, this update is chock-full of new UIKit API for supporting the iPhone Duo.
Someone should write about all of this...
Advanced Swift: Data in swift-foundation is implemented using a pointer to the heap
This is really the main function of Data (big D). Pointing at some data (small d). Perhaps confusingly, the data doesn’t actually live in Data. It’s all on the heap, referenced by a pointer.
This is actually one of the most basic, ubiquitous optimisations across all of computing.
Instead of working with an enormous 500MB block, which takes milliseconds and many cache pages to even read from RAM, we can use an address pointer that fits in a single CPU register.
This underlying storage of Data’s data is contained within the private __DataStorage type. __DataStorage inits using an UnsafeRawPointer, a simple C pointer, to the bytes it will be storing. It sets the relevant metadata such as offset, capacity, length, and of course the bytes.
It allocates this memory on the heap using malloc() and returns a pointer to the new memory. It copies the original data to the memory address of this pointer using memmove() C library function.
Read the full deep-dive on Data in swift-foundation on my blog: https://t.co/O8tWFN2kjO
Swift 6.4 is out! 🎉
This release brings deeper interoperability, stronger platform support, and easier everyday code.
https://t.co/ZfAz5sDaW5
Highlights in this thread 🧵
You can still use uBlock Origin in Brave.
We host uBO and other MV2 extensions on our servers so you can use them despite their removal from the Chrome Web Store.
Toggle them at Settings > Extensions > Manifest v2 extensions.
(Or use Brave's built-in ad/tracker blocking)
I’ve published almost every week for over 3 years. With an overwhelming back-catalog (200 posts and counting!), how can I expect you to sift out the gold?
I’ve been working on a roadmap to help you get to grips with my past work, pick a focus, and quickly level up your knowledge. A curated menu of articles targeted at each experience level.
Check it out here! https://t.co/dwoy2bV0fb