小白学开发(iOS)OC_匿名对象(2015-07-24)
来源:互联网 发布:plc模块化编程实例 编辑:程序博客网 时间:2024/06/09 23:03
//
// main.m
// 匿名对象
//
// Created by admin on 15/7/24.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Iphone.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
/*
1. 匿名对象
> 当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象
而new出的对象,不用指针接收,那么这个对象就称为 匿名对象
*/
Iphone *ip = [Iphone new]; // 创建一个对象,并用指针接收
ip->_cpu = 4;
ip->_size = 4.3; // 通过指针来访问对象的成员变量
ip->_weight = 10;
[ip aboutMyPhone]; // 通过指针来访问对象的方法
[Iphone new]; // 这里创建了一个对象,但是这个对象并没有用指针来接收,这个对象就是匿名对象
// 注意:每次创建一个匿名对象,都会给这个对象分配不同的存储空间,也就是说每个对象都不从相同
// 例如:
[Iphone new]->_cpu = 5; // 通过匿名对象直接给对象成员变量赋值
[Iphone new]->_size = 4.0;
[Iphone new]->_weight = 15;
[[Iphone new] aboutMyPhone]; // 通过匿名对象直接调用对象方法
// 但是 这里打印的结果全为0, 原因是每次赋值时,都创建了新的匿名对象,而最后一个调用对象方法的匿名对象,它的成员变量并没有赋值。所以创建的时候初始化都为0.因此打印结果都为0.
/*
2. 使用场景:
> 当对象方法只调用一次的时候
*/
// 3. 匿名对象可以作为实参进行传递
Person *p = [Person new];
Iphone *ip1 = [Iphone new];
[p sendSignal:ip1]; // 这里是通过指针,作为实参传递
[p sendSignal:[Iphone new]];// 这里是使用匿名对象,作为实参传递
return 0;
// main.m
// 匿名对象
//
// Created by admin on 15/7/24.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Iphone.h"
#import "Person.h"
int main(int argc, const char * argv[]) {
/*
1. 匿名对象
> 当new出一个对象时,如果用一个指针接收这个对象,那么这个指针通常被称为对象
而new出的对象,不用指针接收,那么这个对象就称为 匿名对象
*/
Iphone *ip = [Iphone new]; // 创建一个对象,并用指针接收
ip->_cpu = 4;
ip->_size = 4.3; // 通过指针来访问对象的成员变量
ip->_weight = 10;
[ip aboutMyPhone]; // 通过指针来访问对象的方法
[Iphone new]; // 这里创建了一个对象,但是这个对象并没有用指针来接收,这个对象就是匿名对象
// 注意:每次创建一个匿名对象,都会给这个对象分配不同的存储空间,也就是说每个对象都不从相同
// 例如:
[Iphone new]->_cpu = 5; // 通过匿名对象直接给对象成员变量赋值
[Iphone new]->_size = 4.0;
[Iphone new]->_weight = 15;
[[Iphone new] aboutMyPhone]; // 通过匿名对象直接调用对象方法
// 但是 这里打印的结果全为0, 原因是每次赋值时,都创建了新的匿名对象,而最后一个调用对象方法的匿名对象,它的成员变量并没有赋值。所以创建的时候初始化都为0.因此打印结果都为0.
/*
2. 使用场景:
> 当对象方法只调用一次的时候
*/
// 3. 匿名对象可以作为实参进行传递
Person *p = [Person new];
Iphone *ip1 = [Iphone new];
[p sendSignal:ip1]; // 这里是通过指针,作为实参传递
[p sendSignal:[Iphone new]];// 这里是使用匿名对象,作为实参传递
return 0;
}
//
// Iphone.h
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Iphone : NSObject
{
@public
int _cpu;
float _size;
int _weight;
}
- (void)aboutMyPhone;
- (void)brand;
- (void)callWithNumber:(NSString *)number;
@end
//
// Iphone.m
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Iphone.h"
@implementation Iphone
- (void)aboutMyPhone
{
NSLog(@"cpu = %d, size = %.1f, weight = %d", _cpu, _size, _weight);
}
- (void)brand
{
NSLog(@"苹果手机");
}
- (void)callWithNumber:(NSString *)number
{
NSLog(@"打电话给 %@", number);
}
@end
//
// Person.h
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Iphone.h"
@interface Person : NSObject
- (void)sendSignal:(Iphone *)iphone;
@end
//
// Person.m
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)sendSignal:(Iphone *)iphone
{
[iphone callWithNumber:@"10086"];
}
@end
// Iphone.h
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Iphone : NSObject
{
@public
int _cpu;
float _size;
int _weight;
}
- (void)aboutMyPhone;
- (void)brand;
- (void)callWithNumber:(NSString *)number;
@end
//
// Iphone.m
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Iphone.h"
@implementation Iphone
- (void)aboutMyPhone
{
NSLog(@"cpu = %d, size = %.1f, weight = %d", _cpu, _size, _weight);
}
- (void)brand
{
NSLog(@"苹果手机");
}
- (void)callWithNumber:(NSString *)number
{
NSLog(@"打电话给 %@", number);
}
@end
//
// Person.h
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Iphone.h"
@interface Person : NSObject
- (void)sendSignal:(Iphone *)iphone;
@end
//
// Person.m
// 匿名对象
//
// Created by admin on 15/7/25.
// Copyright (c) 2015年 admin. All rights reserved.
//
#import "Person.h"
@implementation Person
- (void)sendSignal:(Iphone *)iphone
{
[iphone callWithNumber:@"10086"];
}
@end
0 0
- 小白学开发(iOS)OC_匿名对象(2015-07-24)
- 小白学开发(iOS)OC_类和对象(2015-07-22)
- 小白学开发(iOS)OC_类方法和对象方法(2015-07-22)
- 小白学开发(iOS)OC_面向对象总结(2015-07-25)
- 小白学开发(iOS)OC_继承(2015-07-26)
- 小白学开发(iOS)OC_多态(2015-07-27)
- 小白学开发(iOS)OC_ 单个对象的内存管理(2015-08-02)
- 小白学开发(iOS)OC_多个对象的内存管理(2015-08-03)
- 小白学开发(iOS)OC_封装_成员变量(set get方法)(2015-07-24)
- 小白学开发(iOS)OC_组合模式(2015-07-24)
- 小白学开发(iOS)OC_第一个OC (与C的区别)(2015-07-21)
- 小白学开发(iOS)OC_定义一个类(2015-07-21)
- 小白学开发(iOS)OC_类的本质(2015-07-27)
- 小白学开发(iOS)OC_成员变量的作用域(2015-07-27)
- 小白学开发(iOS)OC_ 点语法(2015-07-27)
- 小白学开发(iOS)OC_私有方法(2015-07-28)
- 小白学开发(iOS)OC_ id类型(2015-07-28)
- 小白学开发(iOS)OC_构造方法(2015-07-29)
- SAP,IBM,AC实施之比较
- 课程笔记 10:数据结构(清华) 栈
- 斯坦福大学自然语言处理第七课“情感分析(Sentiment Analysis)
- 倒序输出(如输入456则输出654)
- vagrant 创建box 镜像
- 小白学开发(iOS)OC_匿名对象(2015-07-24)
- HDU 2674-- N!Again【技巧】
- 猜数游戏
- UML——协作图
- Android程序运行时权限与文件系统权限的区别
- LoadRunner脚本编码规范
- lua 中ipairs 和 pairs 区别
- 动态规划---最长公共子序列
- 项目中的连接本地服务器以及JSON解析