4

AUITableViewCell默认有一个textLabel属性。现在,我UITableViewCelltextLabel. 为了减少出错的机会,我想让textLabel编译器无法使用默认属性(自动完成),并且如果我尝试在类之外访问它,代码将无法编译。

将属性设为只读仍将允许我访问和更改标签的属性,因此这不起作用。

有没有办法做到这一点?

编辑:

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

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

如果我尝试访问该属性,当前会给我一个警告。但这并没有完全对编译器隐藏它,它还给了我一个警告“可用性与先前的声明不匹配”。

4

2 回答 2

5

好的,想通了。您可以使用UNAVAILABLE_ATTRIBUTE宏来完成此操作:

@property (nonatomic) UILabel *textLabel UNAVAILABLE_ATTRIBUTE;

然后做cell.textLabel给出一个编译错误:textLabel is unavailable

于 2013-03-23T14:16:30.167 回答
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
于 2013-03-23T13:57:44.487 回答