文档章节

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

lyh2017iOS
 lyh2017iOS
发布于 2017/07/14 09:23
字数 566
阅读 1
收藏 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
博文 357
码字总数 137380
作品 0
朝阳
OC学习之旅 (一) 内存管理及OC常用方法

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

Jonson
2013/04/13
0
2
一、Objective-C概述

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

长平狐
2013/03/28
113
0
JavaScript 30天每日效果图

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

黎跃春
2017/07/19
0
0
iOS成员属性和成员变量的区别

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

朝雨晚风
2016/08/12
0
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
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

高三暑假我是怎么想开去学linux系统的

高三的时候,我有一句口头禅:“老了老了,现在做题越来越迟钝了”。当时整天日夜苦读,体重日益增加,脸色越来越黯淡,我在终于熬过了高考的时候,简直心里面乐得开了花。我终于可以去做自己...

linuxprobe16
11分钟前
0
0
Python 获得命令行参数的方法

需要模块:sys 参数个数:len(sys.argv) 脚本名: sys.argv[0] 参数1: sys.argv[1] 参数2: sys.argv[2]

编程老陆
18分钟前
0
0
链队

队列用链表来表示时,需要用两个变量来记录队列两端的变化:theFront,theBack. 根据链接方向的不同,链队有两种链接方式(其实就是链表的头插入节点和尾插入节点,头删除节点和尾删除节点)。...

Frost729
22分钟前
0
0
IDEA toString() json模板

public java.lang.String toString() {java.lang.StringBuilder builder = new java.lang.StringBuilder();#set ($i = 0)#foreach ($member in $members)#if ($i == 0)builder.appen......

Mtok
32分钟前
0
0
Dubbo内核实现之SPI简单介绍

Dubbo采用微内核+插件体系,使得设计优雅,扩展性强。那所谓的微内核+插件体系是如何实现的呢!即我们定义了服务接口标准,让厂商去实现(如果不了解spi的请谷歌百度下), jdk通过ServiceLo...

明理萝
37分钟前
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部