IOS之学习笔记五(合成存取方法)

一、主要属性介绍

1、自动合成setter、getter方法

1)、接口部分@property指定属性  2)、实现部分@synthesize

如果

@syntheszie  widows = _windows

这里成员变量名是_windows,而不是windows

2atomic(nonatomic)

这里主要是指存取方法为原子操作,实现线程安全,atomic是默认,保证线程安全,但是会导致性能降低,单线程我们一般考虑nonatomic

3、copy

用这个修饰了属性名,把副本值设置给类的属性,如果赋值的副本发生改变,但是类部的属性值不会改变

4、getter、setter

如果(getter = ff1, setter = ff2),会把默认的getter方法改为ff1, 会把默认setter方法改为ff2,我们调用的时候就是[对象 ff1]、[对象 ff2]

5、readonly、readwirte

readonly是指系统指合成getter方法,不合成setter方法

readwirte是默认的,都合成

6、retain

使用retain指示定义属性时,当莫个对象赋值给属性时,该属性原来所引用的对象引用计数减1,被赋值对象的引用计数加1

当一个对象的引用计数大于1时,该对象不该被回收。

7、strong、weak

strong:指被赋值对象持有强引用,不会自动回收

weak:使用弱引用指向被赋值对象,该对象可能被回收

二、测试demo

User.h

#ifndef User_h
#define User_h
#import <Foundation/Foundation.h>
@interface User : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic) NSString *city;
@property (nonatomic, copy) NSString *add;
@property NSString *pass;
@property NSDate *birth;
@property NSDate *birth1;
@end
#endif /* User_h */

User.m

#import <Foundation/Foundation.h>
#import "User.h"

@implementation User
@synthesize name = _name;
@synthesize pass;
@synthesize  birth;
-(void) setName:(NSString *)name
{
    self->_name = [NSString stringWithFormat:@"hello%@", name];
}
@end

main.m文件

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Person.h"
#import "Apple.h"
#import "User.h"
#import "Args.h"
#import "KVCPerson.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {

        User *user = [User new];
        NSMutableString *name = [NSMutableString stringWithString:@"chencaifeng"];
        NSMutableString *city = [NSMutableString  stringWithString:@"hunan"];
        NSMutableString *addr = [NSMutableString stringWithString:@"luyunlu"];
        [user setName:name];
        [user setCity:city];
        [user setAdd:addr];
        [user setPass:@"hello"];
        [user setBirth:[NSDate date]];
        NSLog(@"name is %@, and pass is %@, birth is%@, city is%@, add is %@", [user name], [user pass], [user birth], [user city], [user add]);
        //我们把setName函数重写了,虽然name后面追加了字符串,但是后面打印值没有改变
        [name appendString:@"chenyu"];
        //由于这里属性没有加copy,city后面追加了字符串,所以后面打印也变了
        [city appendString:@"changsha"];
        //由于这里属性加了copy,由于这个addr后面值追加了,所以后面打印不会改变
        [addr appendString:@"kanyunlu"];
        NSLog(@"name is %@, and pass is %@, birth is%@, city is%@, add is %@", [user name], [user pass], [user birth], [user city], [user add]);

        //这里是用.操作
        user.add = @"hello";
        NSLog(@"user add is %@", user.add);
    }
}

三、运行结果

name is hellochencaifeng, and pass is hello, birth isFri Jul  6 19:51:04 2018, city ishunan, add is luyunlu
name is hellochencaifeng, and pass is hello, birth isFri Jul  6 19:51:04 2018, city ishunanchangsha, add is luyunlu
user add is hello
(0)

相关推荐

  • 前端面试 vue 部分 (2)——Vue是如何实现双向绑定的

    数据的双向绑定 当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知到对应的视图做自动更新,而当用户操作视图,ViewModel 也能监听到视图的变化,然后通知数据做改动,这实际上就实 ...

  • getter和setter以及defineProperty的用法

    getter 和 setter 和 defineProperty getter:将对象属性绑定到查询该属性时将被调用的函数 说人话就是,当你调用一个getter属性时会调用定义好的get函数,这个函数 ...

  • Java中static关键字的使用

    static关键字 static表示"静态"的意思,可以用来修饰成员变量和成员方法,static的主要作用在于创建独立于具体对象的域变量或者方法. 简单理解: 被static关键字 ...

  • IOS之学习笔记十五(协议和委托的使用)

    IOS之学习笔记十五(协议和委托的使用)

  • C# LINQ学习笔记五:LINQ to XML

    本笔记摘抄自:https://www.cnblogs.com/yaozhenfa/p/CSharp_Linq_For_Xml.html,记录一下学习过程以备后续查用. 一.生成xml 1.1创建简单的 ...

  • 《中医基础理论》学习笔记(五)

    五行学说 五行是中国古代哲学的基本范畴之一,是中国上古原始的科学思想."五",是木.火.土.金.水五种物质:"行",四通八达,流行和行用之谓,是行动.运动的古义 ...

  • 学习笔记五

    奋斗的理由是厌恶了之前的圈子.不要自以为是,要让别人为是.认为自己什么都不是,别人才认为你是.过五关中毅力关最难过. 找心一致,行动一致,志同道合的人. 因为一个和字,就可以让你小成功光宗耀祖,大成功 ...

  • 什么是ATT试验?开关型油动机油路学习(上汽学习笔记五)

    润滑油系统学习推荐: 为什么汽轮机润滑油温一般要求控制在38℃-45℃,30℃行不行?50℃行不行? 主机润滑油冷油器切换现场操作展示 为什么25项反措要求主机润滑油系统的阀门门芯必须与地面水平安装? ...

  • 密封油系统停运,先停空侧还是先停氢侧?(学习笔记五))

    昨天学习密封油系统启动操作相关知识,学习笔记如下: 为什么发电机内没有压力,氢侧油箱无法自动排油?(启动学习笔记四)) 前几日学习笔记: 密封油系统启动时,油从哪来?(学习笔记一) 密封油四路备用油源 ...

  • 辅行诀大小泻肺汤学习笔记(五)

    四.肺之虚实为病 <辅行诀>云:肺虚则鼻息不利:实则喘咳,凭胸仰息. 肺病者,必咳喘逆气,肩息,背痛,汗出憎风:虚则胸中痛,少气,不能报息,耳聋,咽干. 邪在肺,则皮肤痛,发寒热,上气喘, ...

  • IOS之学习笔记一

    IOS之学习笔记一

  • IOS之学习笔记二(块)

    IOS之学习笔记二(块)