`
janedoneway
  • 浏览: 587836 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

@synthesize window=_window之类的写法的理解

 
阅读更多

From:http://blog.csdn.net/ch_soft/article/details/6981584

 

在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 以一个下划线"_"做前缀。
上面声明部分的 @synthesize window=_window; 意思是说,window 属性为 _window 实例变量合成访问器方法。

也就是说,window属性生成存取方法是setWindow,这个setWindow方法就是_window变量的存取方法,它操作的就是_window这个变量。

下面是一个常见的例子
写法一:
@interface MyClass:NSObject{  
        MyObjecct *_myObject;
}
@property(nonamtic, retain) MyObjecct *myObject;
@end

@implementatin MyClass
@synthesize myObject=_myObject;

写法二:
@interface MyClass:NSObject{
      
}
@property(nonamtic, retain) MyObjecct *myObject;
@end

@implementatin MyClass
@synthesize myObject=_myObject;

这个类中声明了一个变量_myObject,又声明了一个属性叫myObject,然后用@synthesize生成了属性myObject的存取方法,这个存取方法的名字应该是:setmyObject和getmyObject。@synthesize myObject=_myObject的含义就是属性myObject的存取方法是做用于_myObject这个变量的。这种用法在Apple的Sample Code中很常见,
写法二中的_myObject在声明由系统自动生成
分享到:
评论

相关推荐

    Objective-C中的@property和@synthesize用法详解

    相信每个初学者对@property和@synthesize都感到非常的陌生,在此给大家分享下我的自己的理解,有不当之处,还望多多指教。详细说明文章在下面连接http://blog.csdn.net/comeontom/article/details/7455459

    varidict_handler

    变量处理程序一个ObjC助手来使用varidict处理程序。 一行代码值得一千个单词...@implementation Consumer@synthesize handler = _handler;- ( void ) setHandler : (NDHandler) handler { static Validator validator

    如何用cocos2d制作iphone游戏:更猛的怪物和更多得管卡

    为了更好地理解关卡的实现,我们可以简单地设计两个关卡的数据结构: ```objective-c // 假设关卡数据结构 @interface LevelData : NSObject @property (nonatomic, assign) int levelNumber; @property ...

    利用iOS绘制图片生成随机验证码示例代码

    先来看看效果图 实现方法 .h文件 @property (nonatomic, retain) NSArray *changeArray; @property (nonatomic, retain)...@synthesize changeArray = _changeArray; @synthesize changeString = _changeString; @sy

    UITextView增加PlaceHolder

    使用Objective-C的Category可以扩展已有的类,而无需继承。首先创建一个名为 `UITextView+PlaceHolder` 的Category,然后在这个Category中添加一个属性 `placeholder` 和相关的方法。 ```objc // UITextView+...

    iOS开发中属性 property 和 synthesize 详解

    ### iOS开发中属性property和synthesize详解 #### 一、引言 在iOS开发过程中,`@property` 和 `@synthesize` 是两个非常重要的概念。它们不仅简化了代码编写过程,提高了开发效率,还增强了程序的可维护性。本文将...

    iOS getter setter方法

    总之,iOS开发中的getter和setter方法是对象属性操作的核心,理解并熟练掌握它们的用法和自定义,能有效提升代码的可读性、健壮性和性能。通过深入学习和实践,开发者可以更好地控制对象的状态和行为,从而创建更加...

    Objective-C语言教程、案例与项目资源详解.docx

    属性用于封装类的数据成员,而`@synthesize`指令用于自动合成属性的getter和setter方法。例如: ```objective-c @property (nonatomic, assign) NSInteger age; @synthesize age = _age; ``` 这里,`age`属性被...

    Objective-c 学习 (1)

    - **对象**:是类的实例,即根据类创建的具体实体。 - **实例变量** 和 **方法**:分别对应对象的状态和行为。实例变量存储数据,而方法则是对这些数据的操作。 #### 七、类和对象示例 下面的代码展示了一个简单的...

    Objective-c解析XML封装

    2 调用解析类,提供对象名。 3 返回NSMutableDictionary或者NSMutableArray,键值封装。 示例见最后的注释。 XML封装类待续。。。 转载请注明来源,谢谢 ====== XmlResolve.h #import ...

    8.1《iOS开发笔试题600道-笔试手写篇》(2).pdf

    它提供了一种方式来声明类的成员变量并同时自动生成其setter和getter方法的接口。属性可以包含不同的特性,比如readwrite(读写)、readonly(只读)、nonatomic(非原子的)、atomic(原子的)、strong(强引用)、...

    (OC)Setter,Getter修改私有属性

    在类的实现部分,可以通过`@synthesize`关键字启用这个功能: ```objc @implementation Person @synthesize age = _age; @end ``` 自动合成的 Setter 如下: ```objc - (void)setAge:(int)age { _age = ...

    举例讲解Objective-C中@property属性的用法

    Objective-C中的@property是面向对象编程中的一个重要特性,用于声明类的实例变量,并提供自动合成的getter和setter方法。本文将详细介绍Objective-C中@property的用法,以及如何通过属性关键字进行属性定制。 首先...

    Objective-c对象组装XML

    4 利用解析类解析并展现到UIView 部分代码如下: @implementation XmlPackage @synthesize obj; @synthesize isList; @synthesize xmlString; @synthesize objectName; @synthesize lvUp; @synthesize root; @...

    innovus中ccopt常用设置选项.pdf

    `synthesize_ccopt_flexible_htree`命令对创建的灵活H树进行综合,优化其结构以满足设计要求。 9. **获取不同类型的时钟树网**: `get_ccopt_clock_tree_nets`命令用于获取顶级、主干和叶子网,分别对应于时钟树...

    Google的Objective-C编码规范

    - **Google的C++编程规范**:Google有一套详细的C++编程规范,其中的很多规定同样适用于Objective-C编程,除非本规范明确指出不同之处。 - **Google开源项目**:Google的开源项目都遵循这套规范,这些项目的代码本身...

    ios编码规范

    ### iOS编码规范详解 #### 1. 文档目的 本文档旨在定义iOS开发中的程序设计及编码规范,目的是为了统一编程和设计风格,提高...通过遵循以上规范,开发者可以编写出更易于理解和维护的代码,从而提高整个项目的质量。

    The Objective-C Programming Language

    ### Objective-C编程语言...通过学习Objective-C的基本概念、语法以及面向对象编程的原则,开发者可以更好地理解和利用这一语言的强大功能。虽然Swift正在逐渐成为主流,但Objective-C仍然有着广泛的适用性和重要性。

Global site tag (gtag.js) - Google Analytics