iOS开发中常见的语句@synthesize obj=_obj的意义详解

游客

标题:iOS开发中常见的语句@synthesize obj=_obj的意义详解
正文:
我们在进行iOS开发时，经常会在类的声明部分看见类似于@synthesize window=_window; 的语句，那么，这个window是什么，_ window又是什么，两个东西分别怎么用，这是一个比较基本的问题，也关乎我们理解Objective-C中对类、类的属性、类的存取器、类的局部变量的统一理解。 在32位系统中，如果类的 @interface 部分没有进行 ivar 声明，但有 @property 声明，在类的 @implementation 部分有响应的 @synthesize，则会得到类似下面的编译错误：Synthesized property 'xX' must either be named the same as a compatible ivar or must explicitly name an ivar 在 64-bit时，运行时系统会自动给类添加 ivar，添加的 ivar 以一个下划线&quot;_&quot;做前缀。上面声明部分的 @synthesize window=_window; 意思是说，window 属性为 _window 实例变量合成访问器方法。 也就是说，window属性生成存取方法是setWindow，这个setWindow方法就是_window变量的存取方法，它操作的就是_window这个变量。通过这个看似是赋值的这样一个操作，我们可以在@synthesize 中定义与变量名不相同的getter和setter的命名，籍此来保护变量不会被不恰当的访问。下面是一个常见的例子写法一：C代码 @interface MyClass:NSObject{　　 MyObjecct *_myObject; } @property(nonamtic, retain) MyObjecct *myObject; @end @implementatin&
[<<][[1]][2][3][>>]

查看评论(0)
发表评论

首页