文档章节

第02天OC语言(12):匿名对象

lyh2017iOS
 lyh2017iOS
发布于 2017/07/12 00:11
字数 380
阅读 1
收藏 0

####一、概念

 匿名 就是没有名字,匿名对象 就是没有名字的对象

####二、code

>>>main.m
#pragma mark 12-匿名对象
#pragma mark 概念
/*
 匿名 就是没有名字,匿名对象 就是没有名字的对象
 */
#pragma mark - 代码
#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#import "IPhone.h"

#pragma mark - main函数
int main(int argc, const char * argv[])
{
    
    // 1.有名字的对象
    // 只要用一个指针保存了某个对象的地址,我们就可以称 这个指针未某个对象
    // 称p为Person对象
    Person *p = [Person new];
    p->_age = 12;
    p->_name = @"lyh";
    [p say];
    // 2.没有名字的对象
    // 无论有没有名字, 只要调用 new 方法都会返回对象的地址
    // 每次 new 都会新开辟一块内存空间
    [Person new]->_age = 30;
    [Person new]->_name = @"lll";
    [[Person new] say];
    
    
#pragma 1.匿名对象的应用场景
    // 1.当对象只需要使用一次的时候, 就可以使用匿名对象
    IPhone *phone = [IPhone new];
    [phone brand];
    [[IPhone new]brand];
    
    
    // 3.2 匿名对象 可以作为方法的参数(实参)
    Person *p1 = [Person new];
    [p1 signal:[IPhone new]];
    return 0;
}

>>>Iphone
.h
#import <Foundation/Foundation.h>
@interface IPhone : NSObject
// 打印手机品牌
- (void)brand;
- (void)callWithNumber:(int)number;
@end

.m
#import "IPhone.h"

@implementation IPhone

- (void)brand
{
    NSLog(@"苹果品牌");
}

- (void)callWithNumber:(int)number
{
    NSLog(@"打电话给 %i",number);
}
@end

>>>Person
.h
#import <Foundation/Foundation.h>
#import "IPhone.h"
@interface Person : NSObject
{
    @public
    int _age;
    NSString *_name;
}
- (void)say;
- (void)signal:(IPhone *)phone;
@end

.m
#import "Person.h"

// .h 和 .m 之间的切换 command + control + 上下箭头
@implementation Person
- (void)say
{
    NSLog(@"age = %i,name = %@",_age,_name);
}

- (void)signal:(IPhone *)phone
{
    [phone callWithNumber:12344];
}
@end

© 著作权归作者所有

共有 人打赏支持
lyh2017iOS
粉丝 1
博文 357
码字总数 137380
作品 0
朝阳
JavaScript 30天每日效果图

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

黎跃春
2017/07/19
0
0
Swift4.0基础知识回顾

简单介绍一下Swift Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序,Swift语言让应用开发更简单、更快、更稳定,确保最终应用有着更好的质量更多了解Swift可以去《The...

博行天下
2017/12/06
0
0
(一)Block的实质初探

相关文章 (一)Block的实质初探 (二)Block之存储域 NSConcreteStackBlock,NSConcreteGlobalBlock,NSConcreteMallocBlock (三)Block之截获变量和对象 (四)Block之 _block修饰符及其存...

madaoCN
2017/10/21
0
0
快速上手Kotlin

今天是新年上班的第一个周末,很多春节的想法想用文字表达出来,却总是感觉词穷墨尽,无法用语言准备地表达我的想法。我想,大约是迷失了太久,连温情的文字都抛弃了我。新的一年,我会用100...

欧阳锋
2017/02/12
0
0
iOS成员属性和成员变量的区别

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

朝雨晚风
2016/08/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

理解数据库的4种隔离级别

本文转自:http://m.blog.csdn.net/article/details?id=51924963 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。而且,...

初雪之音
42分钟前
1
0
主流的消息队列MQ比较,详解MQ的4类应用场景

目前主流的MQ 1.ZeroMQ 号称最快的消息队列系统,尤其针对大吞吐量的需求场景。 扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发...

游人未归
今天
4
0
React 服务器渲染原理解析与实践

网盘下载地址 React 服务器渲染原理解析与实践 本套课程,讲解了React中SSR技术的整个搭建思路及流程,完整的从原理上讲清楚了SSR的概念,重点在于讲解编写SSR框架遇到的各种知识点,以及细节...

qq__2304636824
今天
4
0
Jenkins使用

clean install -Dmaven.test.skip=true 系统设置 全局工具配置 其他的配置类似 构建项目配置

1713716445
今天
2
0
多线程

1. 多线程概念。并发和并行的概念。 多线程指的是一段时间内cpu同时执行多个线程。一个程序至少运行>=1个进程,进程就是运行中的程序,而一个进程至少运行>=1个线程,线程是操作系统能调度的...

鱼想吃肉
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部