美文网首页
属性跟成员变量的联系

属性跟成员变量的联系

作者: helloyue | 来源:发表于2018-05-25 23:54 被阅读0次

    属性

    声明一个属性:

    @property(nonatomic, strong) NSString *myString;

    声明一个成员变量(实例变量):

    @interface MyViewController : UIViewController {

    NSString*_myString;

    }@end

    我们声明了一个属性,因为现在我们用的编译器已经是LLVM了,所以不再需要为属性声明实例变量了。

    如果LLVM发现一个没有匹配实例变量的属性,它将为你生成以下划线开头的实例变量_myString,不需要自己手动再去写实例变量。

    而且也不需要在.m文件中写@synthesizemyString;也会自动为你生成setter,getter方法。

    @synthesize的作用就是让编译器为你自动生成setter与getter方法。

    那么在.m文件中可以直接使用_myString实例变量,也可以通过属性self.myString。两者都是一样的,只不过self.myString是通过调用_myString的setter/getter方法。

    @synthesize还有一个作用,可以指定与属性对应的实例变量,例如@synthesizemyString= xxxx;那么self.myString其实是操作的实例变量xxxx,而不是_myString了。

    分类中用@property定义变量,只会生成变量的getter,setter方法的声明,不能生成方法实现和带下划线的成员变量。有没有解决方案呢?有,通过运行时建立关联引用。

    友情链接:

    https://blog.csdn.net/fiona_yang123456/article/details/41044979

    相关文章

      网友评论

          本文标题:属性跟成员变量的联系

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