小编raz*_*r28的帖子

objective-c中copy属性的自定义setter

我是否必须使用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才能复制对象?

setter properties objective-c ios

8
推荐指数
1
解决办法
2759
查看次数

在 Objective-C 中以字符串形式获取对象的属性名称

假设您有一个类“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

5
推荐指数
1
解决办法
2399
查看次数