RUMM-346 Fix "device out of memory" crash #64
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What and why?
🚚 This PR provides a fix for crash reported in #58 where
NSFileHandleOperationException
was thrown on devices with high memory and disk pressure when writing the log to file.How?
The exception was thrown when calling
write(_ data:)
method onFileHandle
. This was expected behaviour described by Apple:Unfortunately Apple doesn't provide
throwable
variant offileHandle.write(_:)
so we have to catch this error from Objective-C code (until better API is provided in iPhone SDK).This PR introduces
ObjcExceptionHandler
which catchesNSException
and rethrows it asSwift.Error
.Most effort in this PR focuses on introducing separate Objective-C module that we can interoperate with from Swift code and making this module compatible with Carthage, Cocoa Pods and SPM.
Review checklist