重複の可能性:
Objective-C でクラスレベルのプロパティを宣言するにはどうすればよいですか?
Objective-C 2.0 ドット表記 - クラス メソッド?
Objective-C の @property 宣言では、クラス レベルのプロパティを指定できません。たとえば、これはできません...
@interface NSObject (MyExtension)
+ @property (nonatomic, copy) NSString * className;
@end
...しかし、プロパティは実際には get/set メッセージの構文糖衣にすぎないことを読んだことを覚えています。
だから私はアイデアを持っていて、この通常のクラスレベルのメンバーを書きました...
@interface NSObject (MyExtension)
+ (NSString *) className;
@end
そして、「m」ファイルにこれを追加しました(これも完全に正常です)...
#import "IS_NSObject.h"
@implementation NSObject (MyExtension)
+ (NSString *) className
{
return NSStringFromClass([self class]);
}
@end
...確かに、任意のクラス名の文字列表現を取得するには、これを行うだけです...
NSString * holderForClassName = UICollectionView.className;
出来上がり!クラスレベルのプロパティ!コンパイラの警告すらありません!
実際、欠けているのは、コード補完/インテリセンスの提案だけです。しかし、もちろん、このように入力すると...
NSString * holderForClassName = [UICollectionView className];
もちろん、問題は...私は基本的にクラスレベルのプロパティを「発見」しただけですか(つまり、常にそこにありましたが、このようには使用されていません)?
(まあ、プロパティの構文ですが、それは、大量の括弧をネストするのではなく、チェーンの目的で私が求めていたものです。)