@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实例变量?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)