4

AUITableViewCellにはデフォルトでtextLabelプロパティがあります。今、私は をサブクラス化UITableViewCellし、 を使用しない独自のテキスト レイアウト システムをセットアップしましたtextLabel。エラーの可能性を減らすために、既定のプロパティ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 に答える