我在故事板中添加了一个UITextView,我在这种情况下为UIView(称为FieldView)的子视图创建了一个属性并进行了连接。该属性是这样的
@property (strong, nonatomic) UITextView * instructions;
FieldView是viewController的属性
@property (strong, nonatomic) IBOutlet FieldView *fieldView;
当我想在viewController中使用代码隐藏UITextView *指令时,我在.h文件中声明了该属性,以便在按下按钮时最终可以执行此操作
self.fieldView.instructions.hidden = YES;
但是,xCode给了我一个错误
illegal redeclaration of property in class extension FieldView, attribute must be readwrite while its primary must be readonly
当我在.h和.m文件中添加readwrite
时@property (weak, nonatomic, readwrite) IBOutlet UITextView *instructions;
it said `perhaps you intended this to be a readwrite redeclaration of a readonly public property
我正在尝试做什么的正确方法是什么?
答案 0 :(得分:10)
要解决您的问题,您需要在readonly
文件中声明.h
属性,在readwrite
文件中声明.m
属性:
//FieldView.h
@interface FieldView
@property (nonatomic, readonly, strong) UITextView *instructions;
@end
// FieldView.m
@interface FieldView()
@property (nonatomic, readwrite, strong) IBOutlet UITextView *instructions;
@end
答案 1 :(得分:6)
我也有同样的问题,
如果在.h文件中声明了同名属性,并且您再次在扩展名中声明它,那么您将收到此错误。
因此,重命名属性名称将解决问题。
答案 2 :(得分:0)
对我来说,我必须删除 AppDelegate.h 中的一个属性
之前:
@property (nonatomic, strong) UMModuleRegistryAdapter *moduleRegistryAdapter;
@property (nonatomic, strong) UIWindow *window;
之后:
@property (nonatomic, strong) UIWindow *window;