通过需求选择架构,架构取决于自己的能力(经验)受基础决定。架构就相当于骨骼,逻辑就是基本。逻辑里面只要是:汇报决策
目标回调 vc回调tapA (目标动作)
委托回调 (代理回调)含有delegate
一个组件就是一个对象
九种不同的方法实现
在开发的过程中难免会遇到很多的错误,可是当看到系统给出的英文时,又不知道是什么意思。所以这篇文章总结了Xcode中常见的一些英文单词及词组,可以帮助初学的人快速了解给出的提示。多练习,就肯定能基本掌握。
expression:表达式
assignable:赋值
variable:变量+
redefinition:重复定义
type:类型
conflicting:冲突项
invalid:无效的
conversion:转换
specifier:说明符
indent:缩进
operands:运算对象、操作数
binary:二进制
expected:期望
logical:逻辑
const :常量
constant:常量
statements:语句
initialization:初始化
condition:条件
increment:增量
index:索引、下标
abbrev:简写、缩写
alias:别名,化名
modified:修改/改进的
parameter:参数
implicit:隐含的
undo:取消
redo:重做
cancel:取消
octal:八进制的
incompatible:不匹配的
duplicate:重复
action:行为
instance:实例
modify:修改
general:普通的 in general:大体,一般来说
subclass:子类
superclass:父类
inherit:继承
contents:内容
primitive:原始的
modify:修改
ordered:有序的
collection:集合
dynamic:动态的
querying:查询
deriving:派生
description:描述,描写
collection:集合
programmatic:编程的
a set of:一系列、一组
overview :概述
related 相关的
declared in:声明在...(文件里)
availability:可用的
framework:框架、类库
Conforms to:服从....协议
Conforms :服从
dynamic:动态
term:条目
exact:确切的
membership:成员
entry:条目
consists of:由...组成
unique:独特的、唯一的
determined:决定
conform to:服从,遵照
protocol:协议
distinct:不同的、独特的
addition:添加、增加
literals:字面量
denote:表示,指示
category:类目、分类
concrete:具体的
decouples:解耦
KVC:Key-Value Coding:键值对编码
Getting Numeric Values:获得一个数值
Identifying and Comparing Strings:识别和比较字符串
Replacing Substrings:替换子串
Finding Characters and Substrings:查找字符和子串
Dividing Strings:分割字符串
Combining Strings:拼接字符串
Getting C Strings:得到c语言的字符串
Getting Characters and Bytes:获取字符或字节
Getting a String’s Length:得到字符串的长度
Writing to a File or URL:把内容写到一个文件或者URL里
Creating and Initializing a String from a File:从文件里创建并初始化一个字符串
Deprecated:弃用
Creating and Initializing Strings:创建初始化字符串
tasks:功能
Adopted Protocols:采用的/服从的协议
目标动作回调 委托模式回调 代码块儿回调
SEL test = @selector(方法名);
type enum:NSUInieger{
SwitchStateOff,//default
SwitchStateOn,
}SwitchState;
@property(nonatomic,assign,readonly)SwitchState currentState;//定义一个SwitchState类型的currentState(因为SwitchState不是一个类所以后面不用带星号的指针)
@property(nonatomic,weak)id<SwitchDelegate>delegate;//定义一个遵守协议的委托人反馈给Room
@end
@protocol SwitchDelegate<NSObject>//当开关状态改变时,会调用委托人的此方法进行状态反馈。
-(void)switchD:(SwitchD *)s didChangeState : (SwitchState)currentState;
@end
房间的声明文件.h
@interface Room :NSObject<SwitchDelegate>
@end
房间的实现文件.m
@interface Room ()<SwitchDelegate>
@property(strong,nonatomic)Light *alight;
@property(strong,nonatomic)Switch *aSwitch;
@end
@implementation Room
-(instancetype)init
{
self = [super init];
if(self)
{
self.aLight = [[Light alloc]init];
sekf.aSwitch = [[Switch alloc]init;
//设置开关的委托人为自己(Room)
self.aSwitch.delegate = self;
}
return self;
}
-(void)switchD:(SwitchD *)s didChangeState:(SwitchState)currentState
{
if(currentState==SwitchStateOff)
{
[self.aLight turnOff];
}
else
{
[self.aLight turnOn];
}
}@end
通过上述代码,可以看出,当开关状态改变的时候,开关会调用Room实现的委托方法。通过在委托方法内部的代码,实现对开关状态的反馈进行处理。
代码块回调(匿名函数)
代码块机制
Block变量类型
Block代码封装及调用
Block变量对普通变量作用域的影响
Block回调接口使用
确定block变量的类型有两个因素:储存代码的返回值类型 +储存代码的参数
列表。
没有返回值没有输入参数的block类型。
void(^ varBlock)(void);//变量名位:varblock
有返回值有输入参数的block代码
int (^varBlock1)(int a,int b);//变量名为varBlock1代码类型为int型,有两个int型参数
用typedef关键字进行重命名,用相对简单的类型名进行声明变量
typedef void(^BlockType)(void);
BlockType1 var1 ;//var与varBlock1为同一类型