如何为 .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 定义宏?