zoukankan      html  css  js  c++  java
  • 关于属性的个人理解

    声明属性的4种方法:

    //代码一:
    @interface BaseClass : NSObject{
    @public
    NSString *_name;
    }
    @property(nonatomic,copy,readonly) NSString *name; //这里使用的是readonly,所有会声明geter方法

    -(void) setName:(NSString*)newName;
    /代码二:
    @interface BaseClass : NSObject{
    @public
    NSString *_name;
    }
    @property(nonatomic,copy,readonly) NSString *name; //这里虽然声明了readonly,但是不会生成getter方法,因为你下面自己定义了getter方法。

    -(NSString*) name; //getter方法是不是只能是name呢?不一定,你打开Foundation.framework,找到UIView.h,看看里面的property就明白了)
    -(void) setName:(NSString*)newName;

    //代码三:
    @interface BaseClass : NSObject{
    @public
    NSString *_name;
    }
    @property(nonatomic,copy,readwrite) NSString *name; //这里编译器会我们生成了getter和setter

    //代码四:
    @interface BaseClass : NSObject{
    @public
    NSString *_name;
    }
    @property(nonatomic,copy) NSString *name; //因为readwrite是默认行为,所以同代码三
    上面四段代码是等价的,接下来,请看下面四段代码:
    //代码一:
    @synthesize name = _name; //这句话,编译器发现你没有定义任何getter和setter,所以会同时会你生成getter和setter

    //代码二:
    @synthesize name = _name; //因为你定义了name,也就是getter方法,所以编译器只会为生成setter方法,也就是setName方法。

    -(NSString*) name{
    NSLog(@"name");
    return _name;
    }

    //代码三:
    @synthesize name = _name; //这里因为你定义了setter方法,所以编译器只会为你生成getter方法

    -(void) setName:(NSString *)name{
    NSLog(@"setName");
    if (_name != name) {
    [_name release];
    _name = [name copy];
    }
    }

    //代码四:
    @synthesize name = _name; //这里你自己定义了getter和setter,这句话没用了,你可以注释掉。

    -(NSString*) name{
    NSLog(@"name");
    return _name;
    }

    -(void) setName:(NSString *)name{
    NSLog(@"setName");
    if (_name != name) {
    [_name release];
    _name = [name copy];
    }
    }

    说了这么多也该说说我的干货了(以上都是复制)
    在什么时候使用@property:
    1⃣️:当需要进行外部传值
    2⃣️:当项目中多处用了@property 为了美观就统一使用。


    在只需要在本类中使用的属性最好在

    @implementation addColleageView{

        UITableView *_colleageTableViews;

    }中声明属性,因为是一种国际规范(最好养成这种习惯)

     

    属性名前加下滑线








































  • 相关阅读:
    SharePoint Framework (SPFx) 开发入门教程
    SharePoint 2013 Designer 入门教程
    SharePoint 2013 开发教程
    SharePoint 2013 入门教程
    SharePoint Online 部署SPFx Web部件
    SharePoint Online SPFx Web部件绑定数据
    SharePoint Online 创建SPFx客户端Web部件
    SharePoint Online 配置框架(SPFx)开发环境
    SharePoint Online 创建应用程序目录
    SharePoint Online 启用 IRM
  • 原文地址:https://www.cnblogs.com/YRFios/p/5708522.html
Copyright © 2011-2022 走看看