美文网首页
@synthesize和@dynamic

@synthesize和@dynamic

作者: Jany_4a9a | 来源:发表于2018-08-15 11:12 被阅读15次

要彻底搞清楚这两个关键字需弄明白成员变量和成员属性的区别;

成员变量,OC1.0的时候我们为interface同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量

@interface ViewController : UIViewController
{
// 成员变量
        @public
            NSString* publicString;
       
        @protected
            NSString* protectedString;
       
        @private
            NSString* privateString;
}
@end

OC2.0及以后,@property它将自动创建一个以下划线开头的实例变量。因此,在这个版本中,我们不再为interface声明实例变量。变成我们常见的形式

@interface MyViewController :UIViewController
@property (nonatomic, strong) UIButton *myButton;
@end

我们会在项目中看见这种写法,@synthesize就是告诉编译器给我们自动生成setter/getter方法;你还可以指定属性等于指定的变量,如:@synthesize myButton(属性) = xxx(变量),这就是为什么要先将变量和属性的区别了;

@interface ViewController ()
@property (nonatomic, strong) UIButton *myButton;
@end

@implementation ViewController
@synthesize myButton;

以之相反的@dynamic就是告诉编译器setter/getter由我们自己生成,不需要编译器帮忙生成,一般当一个类实现协议,但这个协议里面有一个属性没有实现就会报错警告,此时用@dynamic就可以告诉编译器这个属性我们自己处理。

相关文章

  • @synthesize 和@dynamic的区别

    @synthesize 和@dynamic的区别 @synthesize 自动生成setter和getter方法,...

  • iOS @synthesize 和 @dynamic 区别

    1. @property中的 @synthesize 和 @dynamic 区别: @synthesize wil...

  • Object-c : @dynamic 与@synthesize

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

  • iOS基本面试题

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

  • 面试题

    synthesize 和 dynamic区别 ? @synthesize 的语义是如果你没有手动实现 setter...

  • @dynamic和@synthsize

    一、使用上的区别 @synthesize和@dynamic是不能同时使用的。 @synthesize age = ...

  • @synthesize和@dynamic

    要彻底搞清楚这两个关键字需弄明白成员变量和成员属性的区别; 成员变量,OC1.0的时候我们为interface同时...

  • @synthesize和@dynamic

    @property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesize...

  • @dynamic 和 @synthesize

    1.@synthesize 该关键字没什么好说的,无非就是自动生成,而且现在都不用手动加,默认就是自动生成的 2....

  • @dynamic和@synthesize

    1.@property有两个对应的词,一个是@synthesize,一个是@dynamic。如果@synthesi...

网友评论

      本文标题:@synthesize和@dynamic

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