由于我无法在Objective-C中的类别中创建合成属性,因此我不知道如何优化以下代码:
@interface MyClass (Variant)
@property (nonatomic, strong) NSString *test;
@end
@implementation MyClass (Variant)
@dynamic test;
- (NSString *)test {
NSString *res;
//do a lot of stuff
return res;
}
@end
Run Code Online (Sandbox Code Playgroud)
该测试方法被调用运行时多次,我做了很多的东西来计算结果.通常使用合成属性我会在第一次调用方法时将值存储在IVar _test中,并且下次只返回此IVar.我该如何优化上面的代码?
我最近发现了类别,并且想知道何时在用户定义的类/新类中使用它们是合适的.例如,我可以看到将类别添加到现有类(如NSString)的好处,但是在创建新类时,为此添加类别而不仅仅是实现常规方法的优势是什么?
希望这是有道理的.非常感谢
儒勒
我一直在阅读Objective-c Protocols and Categories,这对我来说似乎毫无意义.它们都用于以一些有趣的方式向程序添加内容,而不仅仅是手动添加它.
我可能会确信协议的目的是为了让你可以检查id的类型,但这确实是关于它的.我认为没有其他真正的用途.
至于类别,我真的不明白你为什么不把它们添加到代码中.为什么你需要手动指定一个类别中的方法,而不是只是正常地执行它?您是否想要制作一个"子类"但稍作修改?为什么不做一个子类?
我真的没有看到其中任何一个的目的,我希望有人可以告诉我他们真正的用途= /
提前谢谢,克里斯蒂安
感谢您的回复,例如我们有nsstring类,如果我们想要为该类添加方法,不需要为此创建类别,只是我们可以将它子类化,但为什么我们使用类别?请帮助这个