IOS之学习笔记五(合成存取方法)
一、主要属性介绍
1、自动合成setter、getter方法
1)、接口部分@property指定属性 2)、实现部分@synthesize
如果
@syntheszie widows = _windows
这里成员变量名是_windows,而不是windows
2、atomic(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之学习笔记五(合成存取方法)相关推荐
- ((ios开发学习笔记五))手动创建Tab Bar Controller 程序
运行效果图 实现步骤 Step One 创建空项目 Step two 创建两个窗体 Step Three 创建Tab Bar Controller窗体 创建文件window.xib后 添加一个Tab ...
- IOS之学习笔记十五(协议和委托的使用)
1.协议和委托的使用 1).协议可以看下我的这篇博客 IOS之学习笔记十四(协议的定义和实现) https://blog.csdn.net/u011068702/article/details/809 ...
- ios开发学习笔记--Core Motion
iOS开发学习笔记之CoreMotion-运动传感器 官网文档:CoreMotion Framework Reference 一. 简介 现在的苹果手机都基本有运动传感器,能够过获取到设备的加 ...
- python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用
本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...
- Ethernet/IP 学习笔记五
Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...
- StackExchange.Redis学习笔记(五) 发布和订阅
StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...
- 吴恩达《机器学习》学习笔记五——逻辑回归
吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...
- 好程序员教程分析Vue学习笔记五
好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...
- 【AngularJs学习笔记五】AngularJS从构建项目开始
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
最新文章
- matlab 两列数据相乘,在EXCEL中,两列完全相同的数据,求和结果不一样??单元格两列相乘的公式...
- com关于IUnknown接口
- Vue 4.0——整合font-awesome解决方案
- 基本select语句的生命周期
- vector的基本用法 (详解 + 代码演示)
- 中微CMS32 Keil环境搭建
- 面试:Java分派机制
- 5. 高性能MySQL --- 创建高性能索引
- 不要迷失在技术的海洋中(转)
- 16kb等于多少b_一篇文章讲透MySQL为什么要用B+树实现索引
- 【收藏】十个深度学习和机器学习问题速问速答
- Python File文件方法操作open()
- php 验证手机号规则,PHP最完整的验证手机号码
- 电磁场关于静电场和恒定磁场的思维导图及引申时变电磁场
- RGB灯串24键红外遥控控制器芯片 SOP-8氛围灯小夜灯单片机芯片方案开发
- 如何在开始菜单创建快捷方式
- T-test检验中的P,α理解
- 如何查看同一服务器上挂有多少个网站
- Ubuntu和本机之间复制粘贴
- CentOS 7.6 编译安装最新版本glibc2.30 实录