美文网首页
@synthesize

@synthesize

作者: dymost | 来源:发表于2016-03-28 18:45 被阅读155次

    ### @property

    1,变量的声明 声明带有_的变量

    2,变量getter 和setter 方法的声明 如果.m文件中没有@synthesize变量 则还包括这个变量getter方法和setter方法的实现

    3,与很多参数连用,内存,原子属性,可读可写

    ### systhesize

    1,私有变量的声

    2,私有变量getter方法和setter方法的实现

    xcode4.5以后 才有ivar属性 添加_ 属性声明

    在32位处理器 也就是iPhone5之前

    没有ivar声明 没有给

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

    在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属性生成存取方法,这个存取方法就是_window变量的存取方法,它操作的就是_window这个变量.

    下面是一个常见的例子

    @interface MyClass:NSObject{

    MyObjecct *_myObject;

    }

    @property(nonamtic, retain) MyObjecct *myObject;

    @end

    @implementatin MyClass

    @synthesize myObject=_myObject;

    @end

    这个类中声明了一个变量_myObject,又声明了一个属性叫myObject,

    然后@synthesize生成了属性myObject的存取方法,这个存取方法的名字应该是:setmyObject和getmyObject。

    @synthesize myObject=_myObject的含义就是属性myObject的存取方法是操作_myObject这个变量的。这种用法在Apple的Sample Code中很常见,

    相关文章

      网友评论

          本文标题:@synthesize

          本文链接:https://www.haomeiwen.com/subject/zjgjlttx.html