我是否必须使用objective-c中的copy属性手动复制自定义setter中的对象?例如,
我有一个属性:
@property (copy, nonatomic) NSString *someString;
Run Code Online (Sandbox Code Playgroud)
和自定义setter:
- (void)setSomeString:(NSString *)someString
{
//option 1
_someString = someString;
//option 2
_someString = [someString copy];
//do other stuff
}
Run Code Online (Sandbox Code Playgroud)
是自定义setter的选项1还是我必须使用选项2才能复制对象?
假设您有一个类“Foo”,其属性为“testProperty”。目的是获取属性名称(而不是值)NSString
。问题可能与Get property name as a string重复。但这些答案对我没有帮助,因为:
NSStringFromSelector(@selector(prop))
- 无论如何你必须输入字符串。假设我有一个类似的函数
- (NSString *)propertyToString:(id)propertyOfObject
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我可以使用,例如,排序
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:[self propertyToString:foo.testProperty] ascending:NO];
Run Code Online (Sandbox Code Playgroud)
所以最后,代码将会变得干净。
properties introspection objective-c objective-c-runtime ios