gpt4 book ai didi

objective-c - 这是在 Objective-C 中创建类级属性(即点语法)的有效方法吗?

转载 作者:搜寻专家 更新时间:2023-10-30 20:10:01 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How do I declare class-level properties in Objective-C?
Objective-C 2.0 dot notation - Class methods?

Objective-C 的@property 声明不允许您指定类级别的属性。例如,你不能这样做......

@interface NSObject (MyExtension)

+ @property (nonatomic, copy) NSString * className;

@end

...但我记得读过属性实际上只是获取/设置消息的语法糖,所以当您键入 something.foo 时,您实际上只是发送 [something foo] 或 [something setFoo:newFooVal ] 消息。

于是我灵机一动,写了这个普通类(class)成员...

@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;

瞧!一流的属性(property)!甚至没有编译器警告!

实际上,唯一缺少的是代码完成/智能感知中的建议。但如果你像这样输入它当然会......

NSString * holderForClassName = [UICollectionView className];

当然,问题是……我基本上只是“发现”(即它一直就在那里,但没有像这样使用)类级属性吗?

(嗯,好吧,属性语法,但这是我出于链接目的而不是嵌套大量括号的目的。)

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com