文档章节

第04天OC语言(03):synthesize基本使用

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 566
阅读 1
收藏 0
点赞 0
评论 0
  • 不要等到明天,明天太遥远,今天就行动。

#####须读:看完该文章你能做什么?

synthesize基本使用

#####学习前:你必须会什么?(在这里我已经默认你具备C语言的基础了)

什么是方法的实现,setter、getter方法实现


#####一、本章笔记

 一.
 synthesize 是一个编译器指令,它可以简化 我们getter/setter方法的实现
 什么是实现:
 在声明后面写上大括号 就代表着实现
 1.@synthesize 后面告诉编译器, 需要实现那个 @property 生成的声明
 2.告诉 @synthesize ,  需要传入的值 赋值给谁 和返回谁的值给 调用者
 二.
 如果有两个
     {
         int _age;
         int _number;
     }
     @synthesize age = _number;
     那么到时候 访问的_age 是空的, 访问 _number才有值
三.
 如果在@synthesize 后面没有告诉系统 将传入的值赋值给谁, 系统默认会赋值给 和 @synthesize后面写的名称相同的成员变量 ---- @synthesize age;最后等于  @synthesize age = age;

#####二、code ######main.m

######main.m
#pragma mark 03-synthesize基本使用
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#pragma mark - main函数
int main(int argc, const char * argv[])
{
    
    Person *p = [Person new];
    [p setAge:22];
//    NSLog(@"age = %i, p->age = %i",[p age],p->_age);
//    NSLog(@"_age = %i, _number = %i",p->_age,p->_number); // 0 , 22

    NSLog(@"_age = %i, age = %i",p->_age,p->age);

    return 0;
}

######Person

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

@interface Person : NSObject
{
    @public
    int _age;
    int age;
    int _number;
}
@property int age;
@end

>>>.m
#import "Person.h"

@implementation Person
#pragma mark 1.synthesize 是什么 有什么用
/*
 synthesize 是一个编译器指令,它可以简化 我们getter/setter方法的实现
 
 什么是实现:
 在声明后面写上大括号 就代表着实现
 1.@synthesize 后面告诉编译器, 需要实现那个 @property 生成的声明
 2.告诉 @synthesize ,  需要传入的值 赋值给谁 和返回谁的值给 调用者
 
 - (void)setAge:(int)age
 {
    _number = age;
 }
 - (int)age
 {
    return _number;
 }
 

 */


#pragma mark 测试
// 如果在@synthesize 后面没有告诉系统 将传入的值赋值给谁, 系统默认会赋值给 和 @synthesize后面写的名称相同的成员变量 ---- @synthesize age;最后等于  @synthesize age = age;

//@synthesize age = _age;
//@synthesize age = _number;
@synthesize age;

#pragma mark 2.@synthesize 等同于什么
/*
// @synthesize age = _age; 等同于👇
- (void)setAge:(int)age
{
    _age = age;
}
- (int)age
{
    return _age;
}
*/

@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 354
码字总数 137380
作品 0
朝阳
OC学习之旅 (一) 内存管理及OC常用方法

最近学习OC,所以在博客写下自己的笔记. OC的基本: 1 id 相当于java的Object 代表任何对象. 所以id是关键字,不能用作变量!! 2 oc中使用"."符号是调用 int a =object.a 是调用的是 [object ge...

Jonson ⋅ 2013/04/13 ⋅ 2

iOS中属性与成员变量的区别

一、类Class中的属性property   在ios第一版中,我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: @interfa...

北方人在上海 ⋅ 2015/10/30 ⋅ 0

一、Objective-C概述

说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C。如果你还没有编程经验,或者对Objective-C、iOS开发不感兴趣,请忽略...

长平狐 ⋅ 2013/03/28 ⋅ 0

JavaScript 30天每日效果图

JavaScript 30天每日效果图 在Github上看到了wesbos的一个Javascript30天挑战的repo,旨在使用纯JS来进行练习,不允许使用任何其他的库和框架,该挑战共30天,我会在这里复现这30天遇到的挑战...

黎跃春 ⋅ 2017/07/19 ⋅ 0

iOS成员属性和成员变量的区别

一、@property 和@synthesizer 在objective-c 1.0中,我们为interface同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 在o...

朝雨晚风 ⋅ 2016/08/12 ⋅ 0

iOS基础·属性的修饰词与setter的关系(@property、@synthesize、@dynamic、retain、assign、copy、weak、strong、nonatomic、atomic、readonly、readwrite等修饰词与setter、getter等存取方法之间的关系)

很多人讲属性修饰词的时候,喜欢从字面或者定义的角度介绍它们间的区别。这篇文章,我们侧重从修饰词对setter方法的影响直接展示区别。 1. 实例变量:命名区别于全局变量和局部变量 1.1 命名...

陈满iOS ⋅ 2017/12/11 ⋅ 0

OC语言@property @synthesize和id

OC语言@property @synthesize 和id 一、@property @synthesize 关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明和实现。 (一)@property 关键字 @propert...

法斗斗 ⋅ 2016/02/24 ⋅ 0

OC学习笔记八 类

一.类 类的声明(@interface 部分)要放在它自己名为class.h 的文件中。 类的定义(@ implementation 部分)放在相同名称的文件中,扩展名为.m 类中导入其他文件 导入本地文件需要用引号引起...

卧龙小 ⋅ 2014/09/22 ⋅ 0

01 - Object-C入门

Object-C简介 在C语言的基础之上,增加了一层最小的面向对象语法 完全兼容C语言 oc代码中可以混合使用C语言和C++代码 oc可以用来开发MAC OS X平台和 ios平台的应用程序 基本语法 关键字 基本...

口十耳 ⋅ 2015/12/22 ⋅ 0

类的description方法和类的持久化

先介绍一个自定义类描述的方法description,一般情况下,一个自定义类我们在用%@输出的时候,给出的是一个内存地址,我们在该类的.m文件里重写description方法,来修改输出内容,呆会儿我们要...

孔俊 ⋅ 2013/06/13 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

个人博客的运营模式能否学习TMALL天猫质量为上?

心情随笔|个人博客的运营模式能否学习TMALL天猫质量为上? 中国的互联网已经发展了很多年了,记得在十年前,个人博客十分流行,大量的人都在写博客,而且质量还不错,很多高质量的文章都是在...

原创小博客 ⋅ 56分钟前 ⋅ 0

JavaScript零基础入门——(十一)JavaScript的DOM操作

JavaScript零基础入门——(十一)JavaScript的DOM操作 大家好,欢迎回到我们的JavaScript零基础入门。最近有些同学问我说,我讲的的比书上的精简不少。其实呢,我主要讲的是我在开发中经常会...

JandenMa ⋅ 今天 ⋅ 0

volatile和synchronized的区别

volatile和synchronized的区别 在讲这个之前需要先了解下JMM(Java memory Model :java内存模型):并发过程中如何处理可见性、原子性、有序性的问题--建立JMM模型 详情请看:https://baike.b...

MarinJ_Shao ⋅ 今天 ⋅ 0

深入分析Kubernetes Critical Pod(一)

Author: xidianwangtao@gmail.com 摘要:大家在部署Kubernetes集群AddOn组件的时候,经常会看到Annotation scheduler.alpha.kubernetes.io/critical-pod"="",以表示这是一个关键服务,那你知...

WaltonWang ⋅ 今天 ⋅ 0

原子性 - synchronized关键词

原子性概念 原子性提供了程序的互斥操作,同一时刻只能有一个线程能对某块代码进行操作。 原子性的实现方式 在jdk中,原子性的实现方式主要分为: synchronized:关键词,它依赖于JVM,保证了同...

dotleo ⋅ 今天 ⋅ 0

【2018.06.22学习笔记】【linux高级知识 14.4-15.3】

14.4 exportfs命令 14.5 NFS客户端问题 15.1 FTP介绍 15.2/15.3 使用vsftpd搭建ftp

lgsxp ⋅ 今天 ⋅ 0

JeeSite 4.0 功能权限管理基础(Shiro)

Shiro是Apache的一个开源框架,是一个权限管理的框架,实现用户认证、用户授权等。 只要有用户参与一般都要有权限管理,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户...

ThinkGem ⋅ 昨天 ⋅ 0

python f-string 字符串格式化

主要内容 从Python 3.6开始,f-string是格式化字符串的一种很好的新方法。与其他格式化方式相比,它们不仅更易读,更简洁,不易出错,而且速度更快! 在本文的最后,您将了解如何以及为什么今...

阿豪boy ⋅ 昨天 ⋅ 0

Python实现自动登录站点

如果我们想要实现自动登录,那么我们就需要能够驱动浏览器(比如谷歌浏览器)来实现操作,ChromeDriver 刚好能够帮助我们这一点(非谷歌浏览器的驱动有所不同)。 一、确认软件版本 首先我们...

blackfoxya ⋅ 昨天 ⋅ 0

线性回归原理和实现基本认识

一:介绍 定义:线性回归在假设特证满足线性关系,根据给定的训练数据训练一个模型,并用此模型进行预测。为了了解这个定义,我们先举个简单的例子;我们假设一个线性方程 Y=2x+1, x变量为商...

wangxuwei ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部