17

まず第一に、「認識されないセレクターがインスタンスに送信される」問題について多くの質問があることを確認しました。
私はほとんど見たことがありませんが、カテゴリプロパティで定義されたものにアクセスすることについては何も見ていません...

UILabelにプロパティを持つカテゴリがあります。
ゲッターとセッターが定義されています。
実際、私は2つの異なるカテゴリ(2つの異なるクラス:UIButtonとUILabel)に同じプロパティを持っています。
問題は、UIButtonにはこのプロパティにアクセスできますが、UILabelにはアクセスできないことです。
UILabel(text)カテゴリのメソッド/プロパティにアクセスしようとすると、「-[UILabelテスト]:インスタンス0x4e539f0に送信された認識されないセレクター」例外がドロップされます。

両方のカテゴリファイルがインポートされます。

何が問題なのかわかりません。

ここにいくつかのコードがあります:

// UILabel+text.h
@interface UILabel (text)
  - (void)test;
@end

// UILabel+text.m
@implementation UILabel (text)
- (void)test {
  NSLog(@"test");
}
@end

// UIButton+text.h
@interface UIButton (text)
  - (void)test;
@end

// UIButton+text.m
@implementation UIButton (text)
- (void)test {
  NSLog(@"test");// works   
}
@end

// Usage (in UIViewController class) - both elements are defined in XIB
[self.button test];// works
[self.label test];// exception

どんな助けでもありがたいです。
起こりうる問題の手がかりがありません...

ありがとうございました。

マイケル。

4

2 に答える 2

42

静的ライブラリを使用していますか?その場合は、all_loadを他のリンカーフラグに追加します。

「UILabel+text.m」がターゲットに含まれていますか?

于 2011-03-03T11:37:51.620 に答える
0

複数の静的フレームワークを使用するプロジェクトで同じ問題が発生しました。

リンカーフラグに追加all_loadしても、問題は解決しませんでした。GENERATE_MASTER_OBJECT_FILE = YES実行時にカテゴリが正しく検出されるように、ビルド設定を有効にする必要がありました。

于 2020-10-15T19:21:00.157 に答える