私はかなり大きなView Controllerをアプリケーションに持っており、いくつかの機能をカテゴリに分けてクリーンアップしたいと思います。私はカテゴリを実装する方法をよく読んでと持っている:私の.h(カテゴリがStatsVC + TableViewDelegateと呼ばれている)としてカテゴリIvarsを認識しない
#import "StatsVC.h"
@interface StatsVC (TableViewDelegate)
@end
。 と私Implemationは次のように起動します:
@implementation StatsVC (TableViewDelegate)
カテゴリに
数回は、私が読んでいると、おそらくこれが許可されているオリジナルclass.Iのアイバーズある変数にアクセスするが、中IVARのすべての使用のために カテゴリ私は、このエラーメッセージを得る:なぜこれが起こっている誰もが
'Use of undeclared identifier 'iVar'
を知っていますか?
ありがとう、
ありがとうございましたCaleb、ivarsはプロパティで作成され、次に合成されます。 CategoryにあるメソッドはすべてtableViewDelegateメソッドです。ここに例があります:@property(nonatomic、strong)Session * selectedSession;クラスの宣言です。カテゴリでは、次のようにアクセスします。 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return(2 + [[selectedSession pieceSession] count]); } –
この場合、ivarsは実際にはそのカテゴリでは宣言されていません。つまり、.hファイルしか見えないので、ivarsが何であるかを知る方法はありません。プロパティを使用しているので、直接ivarsにアクセスするのではなく、カテゴリメソッドのプロパティを使用する必要があります。 ivarsに直接アクセスしたい場合は、クラスインタフェースで直接ivarsにアクセスしてください。 – Caleb
ありがとうたくさんのCaleb、これはトリックでした。あまりにもあなたがカテゴリからそれらを宣言せずに合成ivarsにアクセスすることはできません悪い... –