美文网首页
@synthesize作用

@synthesize作用

作者: 希罒 | 来源:发表于2019-08-15 11:22 被阅读0次

属性合成器( auto synthesis),这个过程由编译器在编译期执行,它会生成get/set方法和带下划线的私有变量

@interface CYLPerson : NSObject 
@property NSString *name; 
@end

在上例中,会自动生成_name的实例变量。也可以在类的实现代码里面通过 @synthesize关键字来指定实例变量的名字:

@implementation CYLPerson 
@synthesize name = _myName; 
@end



@systhesize合成实例变量规则,有以下几点:

  • 如果指定了成员变量的名称,会生成一个指定的名称的成员变量,
  • 如果这个成员已经存在了就不再生成了.
  • 如果是 @synthesize foo; 还会生成一个名称为foo的成员变量,也就是说:如果没有指定成员变量的名称会自动生成一个属性同名的成员变量
  • 假如 property 名为 object,存在一个名为 _object 的实例变量,则不会自动合成新变量
  • 不能在分类中使用
sythesis.png

以下几种情况是不会autosynthesis(自动合成):

  1. 同时重写了 setter 和 getter 时
  2. 重写了只读属性的 getter 时
  3. 使用了 @dynamic 时
  4. 在 @protocol 中定义的所有属性
  5. 在 category 中定义的所有属性
  6. 重载的属性

以上情况,如果想访问实例变量会报错:“Use of undeclared identifier '_foo'”, 你只能手动合成ivar:@synthesize foo = _foo;

相关文章

  • 属性标识符

    1、@property、@synthesize、@dynamic @synthesize:作用于在@impleme...

  • Object-c : @dynamic 与@synthesize

    1、 @dynamic与@synthesize作用 @dynamic 与@synthesize 是用于对@prop...

  • @synthesize作用

    属性合成器( auto synthesis),这个过程由编译器在编译期执行,它会生成get/set方法和带下划线的...

  • iOS基本面试题

    1、synthesize和dynamic有什么作用? synthesize:是系统自动生成getter和sette...

  • 问题 答案

    1.@synthesize和@dynamic分别有什么作用?如果你没有写@synthesize pro = _p...

  • @synthesize & @dynamic

    synthesize 现在的编译器会为每个@property属性添加@synthesize,如下: 作用为:创造一...

  • @synthesize 的作用

    iOS 6 之后 LLVM 编译器引入property autosynthesis,即属性自动合成。换句话说,就是...

  • @synthesize的作用

    1.@synthesize 的作用:是为属性添加一个实例变量名,或者说别名。同时会为该属性生成 setter/ge...

  • @synthesize 的作用

    原文链接:Why use @synthesize statements 译文 iOS 6 之后 LLVM 编译器引...

  • @synthesize 的作用

    使用@synthesize 只有一个目的——给实例变量起个别名,或者说为同一个变量添加两个名字。 使用场景1: 为...

网友评论

      本文标题:@synthesize作用

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