首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >属性必须是读的,而它的主属性必须是只读的。

属性必须是读的,而它的主属性必须是只读的。
EN

Stack Overflow用户
提问于 2014-04-18 16:21:03
回答 3查看 10.1K关注 0票数 0

我在故事板中添加了一个UITextView,在本例中,我为它创建了一个属性,并在UIView的子视图(称为FieldView)中进行了连接。这房子是这样的

代码语言:javascript
复制
@property (strong, nonatomic) UITextView * instructions;

FieldView是viewController的一个属性。

代码语言:javascript
复制
@property (strong, nonatomic) IBOutlet FieldView *fieldView;

当我想隐藏UITextView *指令并在viewController中使用代码时,我在.h文件中声明了这个属性,这样我最终可以在按下按钮时做到这一点。

代码语言:javascript
复制
 self.fieldView.instructions.hidden = YES;

但是,xCode给了我一个错误

代码语言:javascript
复制
 illegal redeclaration of property in class extension FieldView, attribute must be readwrite while its primary must be readonly

当我在.h和.m文件中添加readwrite时

代码语言:javascript
复制
@property (weak, nonatomic, readwrite) IBOutlet UITextView *instructions;

it said `perhaps you intended this to be a readwrite redeclaration of a readonly public property

做我想做的事的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-18 16:30:42

要解决问题,需要在readonly文件中声明.h属性,在.m文件中声明readwrite属性:

代码语言:javascript
复制
//FieldView.h
@interface FieldView
@property (nonatomic, readonly, strong) UITextView *instructions;
@end

// FieldView.m
@interface FieldView()
@property (nonatomic, readwrite, strong) IBOutlet UITextView *instructions;
@end
票数 15
EN

Stack Overflow用户

发布于 2016-01-12 15:11:13

我也有同样的问题,

如果在.h文件中声明了相同的name属性,并且您再次声明它的扩展名,那么您将得到这个错误。

因此,重命名属性名将解决此问题。

票数 8
EN

Stack Overflow用户

发布于 2021-07-02 19:34:29

对我来说,我不得不删除AppDelegate.h中的一个属性。

在此之前:

代码语言:javascript
复制
@property (nonatomic, strong) UMModuleRegistryAdapter *moduleRegistryAdapter;
@property (nonatomic, strong) UIWindow *window;

之后:

代码语言:javascript
复制
@property (nonatomic, strong) UIWindow *window;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23158056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档