objective-c – 什么时候不想使用@synthesized实例变量?

objective-c – 什么时候不想使用@synthesized实例变量?,第1张

概述在Modern Objective-C运行时,您可以执行以下 *** 作: @interface MyClass : NSObject {}@property NSString *stringProperty;@end@implementation MyClass@synthesize stringProperty;@end 这是我对现代运行时的理解,这不仅会合成我的属性的访问器,还会合成实 在Modern Objective-C运行时,您可以执行以下 *** 作:

@interface MyClass : NSObject {}@property Nsstring *stringProperty;@end@implementation MyClass@synthesize stringProperty;@end

这是我对现代运行时的理解,这不仅会合成我的属性的访问器,还会合成实例变量本身,所以我可以在这个类的方法之一中说[stringProperty length];它会像我声明一个实例变量一样工作.

我现在开始在我的所有代码中使用它,因为,我不得不一遍又一遍地写一遍.我听说过clang 2.0编译器,我甚至可以跳过@synthesize(但这是另一回事).但我一直在想,这样做的一些缺点是什么?除了我的属性,我什么时候才真正需要一个实例变量?

我知道有时候我想保持一个变量私有并且不允许外部访问它(但是我通常只是在我的私有类扩展中声明属性,或者我根本不创建它的属性,如果我不需要访问器).

有时候我不想这样做吗?

解决方法 可能建议不使用合成实例变量的一个可能原因是在当前版本的Xcode(3.2.5)中调试它们有点麻烦.当通过GDB运行代码时,它们似乎没有出现在实时调试器视图中,获取它们的唯一方法是通过gdb控制台,如po [0xOBJ_ADDRESS propertyname].不如标准的非合成ivar那么好.

也许Xcode 4解决了这个问题,但是我没有足够的经验说它(它仍然在NDA下).

关于这个问题的更多信息:Seeing the value of a synthesized property in the Xcode debugger when there is no backing variable

总结

以上是内存溢出为你收集整理的objective-c – 什么时候不想使用@synthesized实例变量?全部内容,希望文章能够帮你解决objective-c – 什么时候不想使用@synthesized实例变量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1006677.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存