默认情况下,UITableViewCell
具有textLabel
属性。现在,我已经将UITableViewCell
子类化,并设置了我自己的文本布局系统,该系统不使用textLabel
。为了减少出错的可能性,我想让编译器无法使用默认属性textLabel
(自动完成),如果我尝试在类外部访问它,则代码将无法编译。
使属性readonly仍然允许我访问和更改标签的属性,因此不起作用。
有没有办法做到这一点?
修改
所以我到目前为止最接近的是重新声明我的子类中的属性并弃用它:
@property (nonatomic) UILabel *textLabel NS_DEPRECATED_IOS(2_0, 3_0);
如果我尝试访问该属性,目前会给我一个警告。但是这并没有完全将它从编译器中隐藏起来,它也给了我一个警告“可用性与之前的声明不匹配”。
答案 0 :(得分:5)
好的,想通了。您可以使用UNAVAILABLE_ATTRIBUTE
宏来完成此任务:
@property (nonatomic) UILabel *textLabel UNAVAILABLE_ATTRIBUTE;
然后执行cell.textLabel
会产生编译错误:textLabel is unavailable
。
答案 1 :(得分:1)
它只读。您可以访问但不能分配。请参阅头文件。
@property(nonatomic,readonly,retain) UILabel *textLabel
//例
@interface myCell : UITableViewCell
{
}
@end
@implementation myCell
-(void)check
{
//You can access
UILabel *label = self.textLabel;
//You canot assign
self.textLabel = label;
}
@end