[PLAT-5789] Fix property declaration warnings #985
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.
Goal
The public headers were triggering compiler warnings when imported by a compilation unit with ARC disabled.
Furthermore many of the string properties were not declared as
copy
potentially leading to being passed mutable values that could subsequently be changed.Design
Following the raywenderlich.com Objective-C style guide for the property declarations;
Property attributes should be explicitly listed, and will help new programmers when reading the code. The order of properties should be storage then atomicity, which is consistent with automatically generated code when connecting UI elements from Interface Builder.
Preferred:
Not Preferred:
Properties with mutable counterparts (e.g. NSString) should prefer
copy
instead ofstrong
.Why? Even if you declared a property as
NSString
somebody might pass in an instance of anNSMutableString
and then change it without you noticing that.Preferred:
@property (copy, nonatomic) NSString *tutorialName;
Not Preferred:
@property (strong, nonatomic) NSString *tutorialName;
Changeset
copy
nonatomic
because they will not be written and read by different threads.Testing
Tested warnings with Xcode 12.3