Xcode 8 seems to be printing, for whatever reason, lots and lots of extra debug information.
We can shut it down by means of an environment variable:
OS_ACTIVITY_MODE = disable
Thoughts
Xcode 8 seems to be printing, for whatever reason, lots and lots of extra debug information.
We can shut it down by means of an environment variable:
OS_ACTIVITY_MODE = disable
Note to future self: the trick to get intrinsicContentSize to properly work, in UITextView instances, is to simply disable scrolling in the UITextView instance.
That way… the intrinsic size will be properly calculated.
Trick of the month….
sudo ln -s /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0\ (14A5261u) /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/10.0\ (14A5261u)
And now you can use your iOS 10 device with Xcode 7. Phew
Here’s an interesting ARC scenario. Consider the following snippet:
[cc lang=”objc”]
__weak __typeof(self) weakSelf = self;
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
[weakSelf doSomething];
});
[/cc]
Whenever the block gets executed… weakSelf might have a valid reference, or not. Right?.
Now, what happens with the following snippet?
[cc lang=”objc”]
__weak __typeof(self) weakSelf = self;
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
[weakSelf doSomething];
[weakSelf doSomethingElse];
});
[/cc]
This is where it gets interesting!. There’s a possibility that doSomething might get executed, while doSomethingElse might not.
If you need to prevent such scenario, a possible workaround is:
[cc lang=”objc”]
__weak __typeof(self) weakSelf = self;
int64_t delay = (int64_t)(0.1 * NSEC_PER_SEC);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay), dispatch_get_main_queue(), ^{
__typeof(self) strongSelf = weakSelf;
[strongSelf doSomething];
[strongSelf doSomethingElse];
});
[/cc]
This snippet warrantees that: if (at the moment of the block’s execution) weakSelf is not nil, it won’t be for the rest of the snippet.
Another interesting note (for future reference) is: self is considered strong, and it may not get invalidated at the middle of a method execution. Okay?
P.s.: Thanks to this Blog Post
I’ve recently stumbled upon severe issues, while trying to write a Unit Test, in Swift, that would access Swift Code that belongs to the main app.
Contrary to what almost everyone mentions, you should not import the Main App’s files into the Testing target.
Instead, this is what you should do: