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

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# dataGridView隔行显示不同颜色

for (int i 0; i < dataGridView_expert.Rows.Count; i)if(i%20)dataGridView_expert.Rows[i].DefaultCellStyle.BackColor Color.Red;

30道四则运算题目---课堂作业--软件工程c++

问题&#xff1a;设计一程序&#xff0c;给二年级小学生随机产生四则运算题目。 一、设计思考问题&#xff1a; 1.四则运算需要俩个运算数和一个运算符。 2.如何产生随机数? 3.如何实现随机产生四则运算&#xff1f; 4.题目是否符合小学生学习范围&#xff1f;&#xff08;减法…

javascript 函数属性prototype(转)

在JavaScript中并没有类的概念&#xff0c;但javascript中的确可以实现重载&#xff0c;多态&#xff0c;继承。这些实现其实方法都可以用JavaScript中的引用和变量作用域结合prototype来解释。 1、prototype 在JavaScript中并没有类的概念&#xff0c;但JavaScript中的确可以实…

linux下python版本升级,linux下升级python版本

linux下升级python版本下载python最新版本2.7.13并编译安装wget https://www.python.org/ftp/python/2.7.12/Python-2.7.13.tar.xzxz -d Python-2.7.13.tar.xztar xf Python-2.7.13.tarcd Python-2.7.13./configure --prefix/usr/local/python-2.7.13makemake installPython-2.…

java离职交接文档_财务人员工作交接你知道么?没处理好不止将来风险大还可能违法...

今天给大家分享一下在工作中&#xff0c;财务人员应该怎么保护自己&#xff1f;1.虚假报销那些事儿在企业内部报销程序中&#xff0c;部分管理人员往往安排下属或助理经办报销程序&#xff0c;所有的费用申请、报销单据的填写均系下属完成&#xff0c;而一旦虚假报销案件浮出水…

iOS方法类:CGAffineTransform

iOS方法类&#xff1a;CGAffineTransform的使用大概 CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性&#xff0c;控制视图的缩放、旋转和平移操作&#xff1a; 另称放射变换矩阵&#xff0c;可参照线性代数的矩阵实现方式0.0 这里附上的CGAffineTran…

SQL Server 数据库没有有效所有者的三种解决办法

问题描述: 开发的过程中,操作系统出了问题,决定重装系统。但是没有将SQL Server中的数据库文件分离出来,直接将系统格了。在新系统数据库中附加了数据库文件,一切还算正常,但当打开数据库关系图的时候出现了问题,如下图所示: 针对以上问题,网上有很多解决办法,但是由…

IOS之学习笔记六(可变形参)

1、实现函数的可变形参 1)、va_list:这是一个可变类型&#xff0c;用于定义指向可变参数列表的指针变量 2)、va_start:让argList指向一个可变参数列表的第一个参数 3&#xff09;、提取argList当前指针指向的参数&#xff0c;并且将指针指向下一个参数 4&#xff09;、释放a…

Javascript:原型模式类继承

原型模式每个函数&#xff08;准确说不是类、对象&#xff09;都有一个prototype属性&#xff0c;这个属性是一个指针&#xff0c;指向一个对象。使用原型对象的好处是可以让所有对象实例共享它包含的属性和方法。1.原型对象&#xff08;1&#xff09;当创建一个新函数&#xf…

C# 学习经验分享

NET 20 周年的学习挑战赛刚结束了第⼀阶段&#xff0c;不知道各位⼩伙伴参加了没有&#xff1f;有⼈问现在学习 C# 是不是有点过时&#xff1f;也有⼈问现在C# 能做什么&#xff1f;更有⼈问学习 C# 能否找到⼯作 &#xff1f;或者你从不同的专家&#xff0c;不同的从业者可以有…

ARM再出手,软银攀登新高山

当下秋意渐浓&#xff0c;那场贯穿整个夏季&#xff0c;引起舆论热潮的软银收购英国芯片巨头ARM案&#xff0c;总算于本月初尘埃落定。 然而时过未半月&#xff0c;易主后的ARM 9月20日宣布推出最新处理器Cortex-R52&#xff0c;官方强调这款具备先进安全特性的实时处理器将主要…

有限服务器延时计算_机房设备功率统计,UPS不间断电源和蓄电池的计算选择

当然了&#xff0c;也可以不用这么麻烦&#xff0c;网上有UPS计算器的&#xff0c;输入条件直接求个结果就行了。弱电笔记&#xff5c;弱电&#xff08;安防&#xff09;计算器诺&#xff0c;就上面那个&#xff01;下面进入正文&#xff1a;一个计算机机房有4台PC机&#xff0…

linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘

云主机有两块硬盘&#xff0c;第一块硬盘盘一般为10G&#xff0c;用于安装系统&#xff0c;第二块磁盘根据云主机类型不同&#xff0c;大小也不相同。我们建议您在使用的时候第二块硬盘作为数据盘&#xff0c;存放你的网站数据&#xff0c;这样在您恢复系统的时候&#xff0c;数…

JavaScript:改变li前缀图片和样式

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"> <title>无标题文档…

Visual Studio/SQL Server系统开发常见问题归纳

问题1.在利用C Sharp(操作系统为Windows7 64位)将Excel数据导入到SQL Server 2005中时,出现如下提示: 解决办法:VS菜单栏 生成→“配置管理器→平台→新建→x86。

IOS学习笔记七之KVC和Key路径

1、KVC介绍 1&#xff09;、KVC是由NSKeyValueCoding协议提供支持最基本的属性和两个方法如下 setValue:属性值 forkey:属性名&#xff1a;为指定属性设置值 valueForKey:属性名 &#xff08;得到或者指定属性的值&#xff09; 2&#xff09;、当设置value为nil的时候&am…

Xamarin效果第十八篇之GIS中复合型Mark

在前面一篇文章中简单在GIS上添加了最基础的Mark,今天再次分享一下早几天摸索的复合型Mark;啥也不说了都在效果里:1、关于数据我就是直接抓的高德的(至于后面需要的参数那就自行抓):https://restapi.amap.com/v3/airquality/aqilist?2、至于Mark无非就是用了CompositeSymbol:C…

Cent OS yum 安装 Adobe flash player

Cent OS yum 安装 Adobe flash player 桌面打开浏览器访问&#xff1a;http://get.adobe.com/cn/flashplayer/。网页会判断操作系统和浏览器并下载 Flash Player&#xff08;支持Firefox浏览器&#xff09;。 或者直接下载&#xff1a; i386系统 wget http://linuxdownload.ado…

WPF定时刷新UI界面

代码&#xff1a; using NHibernate.Criterion; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Data; using System.Linq; using System.Text; using System.Threading; using System.Wi…

找不到libmmd.dll无法继续执行代码_300 行代码带你秒懂 Java 多线程!| 原力计划...

作者 | 永远在路上【】责编 | 胡巍巍出品 | CSDN博客线程线程的概念&#xff0c;百度是这样解释的&#xff1a;线程(英语&#xff1a;Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的…