zoukankan      html  css  js  c++  java
  • 成员变量的声明@interface 和@property

        刚开始接触OC再看别人写的代码的时候,常常困惑于人家在声明属性时的写法,总结出来有三中方式,不知道哪一种比较规范化,现在我把三种方式贴出来,然后再一一探讨每个方式声明属性的区别。

    方式一:直接在@interface中的大括号中声明。

    @interface MyTest : NSObject{

        NSString *mystr;

    }


    方式二:在@interface中声明,然后再在@property中声明。

    @interface MyTest : NSObject{

        NSString *_mystr;

    }


    @property (strong, nonatomic) NSString *mystr; 

    随后在.m文件中加入 

    @synthesize mystr = _myStr;


    方式三:直接用@property声明

     

    @interface MyTest : NSObject{

    }


    @property (strong, nonatomic) NSString *mystr;

    随后在.m文件中加入@synthesize mystr = _myStr;


    ==========================我是分割线============================


    首先来说一下方式一根方式三的区别,使用方式一声明的成员变量是只能在自己类内部使用的,而不能在类的外部使用,

    (就是通过 类名. 点的方式是显示不出来的),方式三则相反,它可以在类的外部访问,在类的内部可以通过下划线+变量名

    或者self.变量名的方式来访问。


    方式二的写法是一种过时的声明变量的方式,xcode在早期@systhesize没有自动合成属性器之前,需要手写

    getter与setter方法,下划线从风格上表明这是类的内部变量,要是需要直接使用变量则需要使用get或者set的方式。

    在 XCode目前有了自动合成属性器后,编译器会自动帮我们生成一个以下划线开头的的实例变量,所以我们不必去同时声明属性

    与变量。 我们可以直接用@property的方式来声明一个成员属性,在.m文件中使不使用@systhesize都无所谓,xcode会自动帮你生成 getter与setter.

    个人比较喜欢使用方式三的方式,这是是苹果开发模板所推荐的,也可以在.m文件中不加@systhesize看个人喜好吧。


  • 相关阅读:
    android数据恢复
    UVA 690 Pipeline Scheduling
    2017 国庆湖南 Day4
    2017 国庆湖南 Day5
    2017 国庆湖南 Day6
    2017国庆 清北学堂 北京综合强化班 Day1
    2017 国庆湖南Day2
    bzoj 2962 序列操作
    UVA 818 Cutting Chains
    UVA 211 The Domino Effect
  • 原文地址:https://www.cnblogs.com/im5437/p/4718282.html
Copyright © 2011-2022 走看看