如何为 .h 中定义的属性在 .m 中为 Setter 和 Getter 自动生成 Xcode 5 代码? [复制]

Posted

技术标签:

【中文标题】如何为 .h 中定义的属性在 .m 中为 Setter 和 Getter 自动生成 Xcode 5 代码? [复制]【英文标题】:How to make Xcode 5 Autogenerate Code for Setters and Getters in .m for Properties defined in .h? [duplicate] 【发布时间】:2014-03-05 04:37:10 【问题描述】:

我想要做的是在我用目标 C 编写我的类时节省时间。如果我在我的 .h 文件中定义属性,我能否以某种方式为这些属性创建 Xcode 5 自动获取设置器和获取器。

假设这是我的 .h:

#import <UIKit/UIKit.h>

@interface PlayingCardView : UIView

@property (nonatomic) NSUInteger rank;
@property (nonatomic, strong) NSString* suit;
@property (nonatomic) BOOL faceUp;

@end

我需要 Xcode 来生成这样的东西:

#import "PlayingCardView.h"

@implementation PlayingCardView

- (void)setSuit:(NSString *)suit

    _suit = suit;
    [self setNeedsDisplay];


- (void)setRank:(NSUInteger)rank

    _rank = rank;
    [self setNeedsDisplay];


- (void)setFaceUp:(BOOL)faceUp

    _faceUp = faceUp;
    [self setNeedsDisplay];



/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect

    // Drawing code

*/

- (id)initWithFrame:(CGRect)frame

    self = [super initWithFrame:frame];
    if (self) 
        // Initialization code
    
    return self;


@end

所以 setSuit.. 和其他 setter 将由 Xcode 自动生成/编码。

请记住,我不是在寻找可以执行此操作的第三方工具或脚本。我想知道 Xcode 可以本地做吗?如果是,怎么做?

【问题讨论】:

你的意思是,让 Xcode 为你生成 getter & setter? 不实现drawRect:,为什么还要调用setNeedsDisplay?如果您没有 drawRect: 方法来处理更改,setNeedsDisplay 是毫无意义的。 根据您发布的代码,似乎没有理由为 getter 提供明确的代码,只有 setter。 不要在 .m 中“合成”属性,您可以使用“_name”访问您的属性,例如“_faceUp” @Hamdullahshah 使用实例变量并不是最好的方法,您应该始终尝试使用属性,即使在处理私有变量时也是如此。至少这是苹果推荐的 【参考方案1】:

xcode 本身无法做到这一点——苹果希望你自动合成

但是

有一个叫做accessorizer的工具可以做到这一点

注意:我与该应用的作者没有任何关系/关联。我只知道它的存在 :D

【讨论】:

以上是关于如何为 .h 中定义的属性在 .m 中为 Setter 和 Getter 自动生成 Xcode 5 代码? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何为 h:dataTable/ui:repeat 的每一行/项目设置转换器属性?

@StreamListener 为 kafka 定义 groupId-如何为同一主题设置多个消费者

如何在 EF Core 5 中为自定义 SQL 配置导航属性

如何为 UIAlertViewController 定义宏?

如何为使用createwindow创建的窗口创建自定义背景颜色

Angular - 如何为可选输入属性设置默认值