一、主要属性介绍

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

IOS之学习笔记五(合成存取方法)相关推荐

  1. ((ios开发学习笔记五))手动创建Tab Bar Controller 程序

    运行效果图 实现步骤 Step One 创建空项目 Step two 创建两个窗体 Step Three 创建Tab Bar Controller窗体 创建文件window.xib后 添加一个Tab ...

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

    1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...

  3. ios开发学习笔记--Core Motion

    iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一.     简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...

  4. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  5. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  6. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  7. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  8. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

  9. 【AngularJs学习笔记五】AngularJS从构建项目开始

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

最新文章

  1. matlab 两列数据相乘,在EXCEL中,两列完全相同的数据,求和结果不一样??单元格两列相乘的公式...
  2. com关于IUnknown接口
  3. Vue 4.0——整合font-awesome解决方案
  4. 基本select语句的生命周期
  5. vector的基本用法 (详解 + 代码演示)
  6. 中微CMS32 Keil环境搭建
  7. 面试:Java分派机制
  8. 5. 高性能MySQL --- 创建高性能索引
  9. 不要迷失在技术的海洋中(转)
  10. 16kb等于多少b_一篇文章讲透MySQL为什么要用B+树实现索引
  11. 【收藏】十个深度学习和机器学习问题速问速答
  12. Python File文件方法操作open()
  13. php 验证手机号规则,PHP最完整的验证手机号码
  14. 电磁场关于静电场和恒定磁场的思维导图及引申时变电磁场
  15. RGB灯串24键红外遥控控制器芯片 SOP-8氛围灯小夜灯单片机芯片方案开发
  16. 如何在开始菜单创建快捷方式
  17. T-test检验中的P,α理解
  18. 如何查看同一服务器上挂有多少个网站
  19. Ubuntu和本机之间复制粘贴
  20. CentOS 7.6 编译安装最新版本glibc2.30 实录

热门文章

  1. WPF 左侧菜单样式
  2. 谈谈MySQL面试的45个常见问题
  3. 使用现代化 C# 语法简化代码
  4. 如何在 ASP.NET Core MVC 5 中处理未知的 Action
  5. 总结 Visual Studio 2019 发布以来 XAML 工具的改进
  6. HttpReports 2.0 发布了 !!!
  7. 我们真的需要JWT吗?
  8. ASP.NET Core 注册单例方案
  9. [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?
  10. 浅议gRPC的数据传输机制和回调机制