使默认属性无法访问?

时间:2013-03-23 13:54:01

标签: objective-c cocoa

默认情况下,UITableViewCell具有textLabel属性。现在,我已经将UITableViewCell子类化,并设置了我自己的文本布局系统,该系统不使用textLabel。为了减少出错的可能性,我想让编译器无法使用默认属性textLabel(自动完成),如果我尝试在类外部访问它,则代码将无法编译。

使属性readonly仍然允许我访问和更改标签的属性,因此不起作用。

有没有办法做到这一点?

修改

所以我到目前为止最接近的是重新声明我的子类中的属性并弃用它:

@property (nonatomic) UILabel *textLabel NS_DEPRECATED_IOS(2_0, 3_0);

如果我尝试访问该属性,目前会给我一个警告。但是这并没有完全将它从编译器中隐藏起来,它也给了我一个警告“可用性与之前的声明不匹配”。

2 个答案:

答案 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
相关问题