【发布时间】:2020-11-07 05:08:58
【问题描述】:
我在 Objective-c 中有一个表单实现,我想扩展我的小部件(NSButton、NSTextField 等)以包含表示其唯一标识符字符串的附加字符串,以便在提交事件发生后使用,这json 的触发器生成包含所有小部件 id/value 对。
我尝试使用类别来扩展 NSControl,它是所有这些小部件的公共父级,如下所示。
NSControl+formItemSupport.h
-------------------------------
@interface NSControl (formItemSupport)
@property NSString * formItemId;
@end
NSControl+formItemSupport.m
-------------------------------
@implementation NSControl (formItemSupport)
-(NSString *)formItemId {
return self.formItemId;
}
-(void)setFormItemId:(NSString *)formItemId {
self.formItemId = formItemId;
}
在我从NSControl+formItemSupport.m 导入的form.m 文件中,但是当我尝试在NSButton : NSControl 对象中设置此字段时。但是,当我尝试设置属性 formItemId 时,我进入了无限循环。也许还有另一种方法可以在不使用继承的情况下使用基于变量的属性来扩展 objc 类?
【问题讨论】:
-
self.formItemId是[self formItemId]的语法糖,self.formItemId = formItemId是[self setFormItemId:formItemId]的语法糖。
标签: objective-c oop objective-c-category