OC 复合
在Objective-C中复合是通过包含作为实例变量的对象指针实现的
严格来说,只有对象间的组合才叫复合
--------------------Car.h---------------------------
#import <Foundation/Foundation.h>
#import "Wheel.h"
@interface Car : NSObject
@property Wheel *wheel1;
@property Wheel *wheel2;
@property Wheel *wheel3;
@property Wheel *wheel4;
/*
1.如果复合的属性是另外一个类的类型,那么在使用之前记得初始化该属性
2.如果想要在[内部没有初始化复合属性]的前提下使用的话,需要传入的参数必须是已经初始化过的
*/
@end
-------------------Car.m-------------------------
#import "Car.h"
@implementation Car
//内部初始化复合属性
- (instancetype)init
{
self = [super init];
if (self) {
self.wheel1 = [[Wheel alloc] init];
self.wheel2 = [[Wheel alloc] init];
self.wheel3 = [[Wheel alloc] init];
self.wheel4 = [[Wheel alloc] init];
}
return self;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"\nwheel1.type:%@ \nwheel2.type:%@ \nwheel3.type:%@ \nwheel4.type:%@", self.wheel1.type, self.wheel2.type, self.wheel3.type, self.wheel4.type];
}
@end
---------------------Wheel------------------------
#import <Foundation/Foundation.h>
@interface Wheel : NSObject
@property NSString *type;
@end
#import "Wheel.h"
@implementation Wheel
@end
--------------------测试文件--------------------------
#import <Foundation/Foundation.h>
#import "Wheel.h"
#import "Car.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Car *car = [[Car alloc] init];
// 外部初始化复合属性
// Wheel *wheel1 = [[Wheel alloc] init];
// wheel1.type = @"法拉利的轮子1";
// Wheel *wheel2 = [[Wheel alloc] init];
// wheel2.type = @"法拉利的轮子2";
// Wheel *wheel3 = [[Wheel alloc] init];
// wheel3.type = @"法拉利的轮子3";
// Wheel *wheel4 = [[Wheel alloc] init];
// wheel4.type = @"法拉利的轮子4";
//
// car.wheel1 = wheel1;
// car.wheel2 = wheel2;
// car.wheel3 = wheel3;
// car.wheel4 = wheel4;
car.wheel1.type=@"宝马的轮子1";
car.wheel2.type=@"宝马的轮子2";
car.wheel3.type=@"宝马的轮子3";
car.wheel4.type=@"宝马的轮子4";
NSLog(@"%@",car);
}
return 0;
}
OC 复合的更多相关文章
- OC 复合 组装电脑
键盘类 #import <Foundation/Foundation.h> @interface Keyboard : NSObject @property(strong,nonatomi ...
- OC 类簇与复合
OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不 ...
- 【《Objective-C基础教程 》笔记ch05】(六)OC中的复合机制Composition
1.复合通过包括作为实例变量的的对象指针实现的. @interface Unicycle : NSObject { Pedal*pedal; ...
- OC中的复合
#import <Foundation/Foundation.h> #import "Car.h" int main(int argc, const char * ar ...
- oc必须知道的知识点
id数据类型 1.通用的指针类型 2.没有*号 3.使用id类型时,不能给对象的属性或成员变量进行赋值 4.可以对其发送任何(存在的)消息 import与@class的区别 1.import会包含 ...
- iOS - OC 面向对象语法
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(cate ...
- Swift基本语法以及与OC的比较
一.注释: 1.单行注释和OC一致. 2.块注释中有与OC不同点:可以嵌套注释 二.常量和变量: 1.常量:初始化后可读不可写 let 2.变量:初始化后可读可写 var //不需要指定类型,系统会自 ...
- OC基础-第1天
#pragma mark - Day01_01_OC语言的历史(了解) 1) Objective - C 是一门面向对象的高级语言 2) Objective - C 简称 obj - C \ OC ...
- oc总结
OC10天大纲 一.类和对象 1.什么是类? 同一种对象的抽象就是类. 2.什么是对象? 世界上的任何事物都可以称为对象,每个对象都有他自己的属性和行为. 3.如何创建一个类(请把一个.h和一个.m粘 ...
随机推荐
- ssh连接linux服务器不断开- "Write failed: Broken pipe"
我自己用阿里云的服务器的时候,发现ssh连上以后,一会不用就断掉了,非常不方便,服务端的系统是ubuntu. 查了些东西,原来可以去配置服务端的sshd,或者客户端的ssh,就行了. 1,配置服务器端 ...
- PHP_SELF变量解析和重复路径解决
最近升级PHP到PHP7版本,并重新部署了新的Nginx,启动的时候发现了一个问题,全局变量$_SERVER['PHP_SELF']的值发生了改变,从而影响到代码的功能.因此我们来了解下$_SERVE ...
- 20145127《java程序设计》第三次实验
实验三 敏捷开发与XP实践 一.实验内容及其步骤 1.配置开源中国公钥 2.找到ssh公钥 3.在开源中国添加公钥 4.下载同组同学项目 5.推送代码到开源中国 6.推送代码成功 二.实验感想总结: ...
- 【前端】javascript+jQuery实现旋转木马效果轮播图slider
实现效果: 实现原理: 技术栈: javascript+jQuery+html+css 实现步骤: // 0. 获取元素 // 1. 鼠标放置到轮播图上,显示两侧的控制按钮,移开后隐藏 // 2. 为 ...
- Python3基础 if嵌套示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- RSA加密解密中pkcs1与pkcs8格式私钥互相转换
net,ios中rsa加解密使用的是pkcs1,而java使用的是pkcs8 如果是按1024取模(通常都是1024),pkcs1格式的私钥长度应该是812.如果是pkcs8的格式的密钥长度为861. ...
- ACM-ICPC 2018 徐州赛区网络预赛H Ryuji doesn't want to study(树状数组)题解
题意:给你数组a,有两个操作 1 l r,计算l到r的答案:a[l]×L+a[l+1]×(L−1)+⋯+a[r−1]×2+a[r] (L is the length of [ l, r ] that ...
- POJ 2449 Remmarguts' Date(第K短路 + A* + 最短路)题解
题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做.A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h ...
- IDEA,RubyMine等JetBrains系列软件通用破解教程
此教程不光适用于IDEA,还可以在RubyMine等JetBrains系列软件使用,亲测可用. (1)下载安装你需要的JetBrains系列软件,安装完最好不要打开,直接finish,断开网络. (2 ...
- 【深度学习】Pytorch 学习笔记
目录 Pytorch Leture 05: Linear Rregression in the Pytorch Way Logistic Regression 逻辑回归 - 二分类 Lecture07 ...