出现这样的情况,主要是属性名中包括 keyword.
You can solve this by:
-
Renaming that property:
@property (strong, nonatomic) NSString *theNewTitle;
-
Keeping the property name and specifying a getter name that doesn’t begin with one of the special method name prefixes:
@property (strong, nonatomic, getter=theNewTitle) NSString *newTitle;
-
Keeping both the property name and the getter name, and telling the compiler that, even though the getter name starts with
new
,
it belongs to thenone
method
family as opposed to thenew
method
family:#ifndef __has_attribute
#define __has_attribute(x) 0 // Compatibility with non-clang compilers
#endif #if __has_attribute(objc_method_family)
#define BV_OBJC_METHOD_FAMILY_NONE __attribute__((objc_method_family(none)))
#else
#define BV_OBJC_METHOD_FAMILY_NONE
#endif @interface ViewController : UIViewController
@property (strong, nonatomic) NSString *newTitle;
- (NSString *)newTitle BV_OBJC_METHOD_FAMILY_NONE;
@endNote that even though this solution allows you to keep
newTitle
as
both the property name and the getter name, having a method called-newTitle
that
doesn’t return an object owned by the caller can be confusing for other people reading your code.