OC 复合】的更多相关文章

在Objective-C中复合是通过包含作为实例变量的对象指针实现的 严格来说,只有对象间的组合才叫复合 --------------------Car.h--------------------------- #import <Foundation/Foundation.h> #import "Wheel.h" @interface Car : NSObject @property Wheel *wheel1; @property Wheel *wheel2; @prop…
键盘类 #import <Foundation/Foundation.h> @interface Keyboard : NSObject @property(strong,nonatomic)NSString *brand; @end #import "Keyboard.h" @implementation Keyboard - (NSString *)description { return [NSString stringWithFormat:@"%@&quo…
OC 类簇与复合 类簇: 类簇是Foundation框架中广泛使用的设计模式.类簇将一些私有的.具体的子类组合在一个公共的.抽象的超类下面,以这种方法来组织类可以简化一个面向对象框架的公开架构,而又不减少功能的丰富性. 简单的来说,NSString是个"工厂类",然后它在外层提供了很多方法接口,但是这些方法的实现是由具体 的内部类来实现的.当使用NSString生成一个对象时,初始化方法会判断哪个"自己内部的类"最适合生成这个对象,然后这个"工厂"…
 1.复合通过包括作为实例变量的的对象指针实现的.        @interface Unicycle : NSObject        {           Pedal*pedal;           Tire*tire;         }//Pedal和tire通过复合的方式组成了Unicycle 2.存取方法--用来读取或者改变某个对象属性的方法. #import <Foundation/Foundation.h> @interface Car : NSObject { Eng…
#import <Foundation/Foundation.h> #import "Car.h" int main(int argc, const char * argv[]) { @autoreleasepool { Car *ca =[Car new]; Engine *eng=[Engine new]; eng.pingpai=@"…
id数据类型 1.通用的指针类型 2.没有*号 3.使用id类型时,不能给对象的属性或成员变量进行赋值 4.可以对其发送任何(存在的)消息   import与@class的区别 1.import会包含这个类的所有信息,包括实体变量和方法,而@class只是告诉编译器,其后面声明的名称是类的名称 2.如果类之间有循环依赖关系使用#import来相互包含,那么就会出现编译错误. 3.如果使用@class在两个类的头文件中相互声明,则不会有编译错误出现. 4.@class是放在interface中的…
1.类 1)根类:因为类 NSObject 是层次结构的最顶层,因此称为根类. 可以将类称为子类(subclass)和父类(superclass),也可以将类称为子类和超类. 2)分类/类别(category):允许以模块的方式向现有类定义添加新的方法(默认不能添加实例变量).扩展自己或他人以前实现的类,使它适合自己的需要. 分类的名称括在类名之后的一对圆括号"( )"中. @interface QCStudent (Print) @end @implementation QCStud…
一.注释: 1.单行注释和OC一致. 2.块注释中有与OC不同点:可以嵌套注释 二.常量和变量: 1.常量:初始化后可读不可写 let 2.变量:初始化后可读可写 var //不需要指定类型,系统会自动判断. let teacherName = "虎哥";//自动判断为字符串,句尾分号可写可不写 let teacherName1 = ;//自动判断为数字 let teacherAge = //变量:初始化之后变量 (可读可写) var teacherName2 = "虎哥&q…
#pragma mark - Day01_01_OC语言的历史(了解) 1) Objective - C 是一门面向对象的高级语言 2) Objective - C 简称 obj - C  \  OC 3) OC 本质是还是C语言 ,是在C语言基础上加上了面向对象的部分,把C语言中复杂的.繁琐的语法封装的更为简单 4) OC完全兼容C,可以在任何位置写C语言的代码 #pragma mark - Day01_02_OC语言的发展现状(了解) #pragma mark - Day01_03_OC的未…
OC10天大纲 一.类和对象 1.什么是类? 同一种对象的抽象就是类. 2.什么是对象? 世界上的任何事物都可以称为对象,每个对象都有他自己的属性和行为. 3.如何创建一个类(请把一个.h和一个.m粘过来解释里面的每一块东西) .h文件由 @interface 类名 : 父类 @end 组成 1.@interface指引着这个类的名字 2.interface后面紧跟着这个类的名字,这里是Human 3.类名后面紧跟着:(冒号),冒号指引着这个类的父类(爸爸类) 4.:后面就是父类的名字,这里是N…
OC基础  内存管理 我们所了解的c语言内存管理,如下: (1)c语言的内存分配:char *p = (char*)malloc(100*sizeof(char)); (2)c语言的内存释放:free(p); c语言内存管理存在的缺陷: (1)不释放就会造成内存泄露. (2)多次释放就会造成崩溃. (3)大型项目中多人对一块内存进行操作时,不能释放内存,因为不知道别人是否还在使用. oc语言的内存管理 1.内存管理 (1)引用计数. (2)内存管理的黄金法则:谁创建谁释放. 让我们来看一下测试例…
OC常见的关键字介绍: @ 看到这个关键字,我们就应该想到,这是Object-C对C语言的扩展,例如@interface XXX. @interface 声明类 @implementation 实现类 @protocol 声明协议 @optional 与@protocol配合使用,说明协议中的某个或者某几个方法可以不实现 @required 与@protocol配合使用,说明协议中的某个方法或者某几个方法必须实现 @end 与@interface ,@implementation,@protoc…
1. 从编写.编译.链接的流程. 1). 创建1个.m的源文件. 2). 在这个文件中写上符合OC语法规范的源代码. 3). 编译. a. 预编译: 执行预处理代码. b. 检查语法. c. 生成目标文件. .o的目标文件. object 4). 链接. a. 添加启动代码. b. 链接函数. 如果代码中使用到了框架中的功能.那么在链接的时候,就必须要告诉编译器去哪个框架中找这些函数. cc xx.o -framework 框架名称 2. 和C程序各个阶段的文件后缀名对比. 源文件     目标…
前言 转眼Swift3都出来快一年了,从OC到Swift也经历了很多,所以对两者的一些使用区别也总结了一点,暂且记录下,权当自己的一个笔记. 当然其中一些区别可能大家都有耳闻,所以这里也会结合自身的一些平常记录,稍许整理,才诞生了本篇文章,中间或许会有不对之处,还望指出来,共同进步. 正文 一.Swift和Objective-C的联系 Swift和Objective-C共用一套运行时环境,Swift的类型可以桥接到Objective-C(下面我简称OC),反之亦然.两者的互相引用混合编程我之前有…
以下是OC中的实例,Swift部分不适用 iOS中的注释 // 单行注释 // 注释对代码起到解释说明的作用,注释是给程序员看的,不参与程序运行 /*  多行注释   Xcode快捷键   全选 cmd+a   复制 cmd+c   粘贴 cmd+v   设置 cmd+,   注释 cmd+/   运行 cmd+R   编译 cmd+B   */ 进制转化     数据类型 •float和double的区别:精确度不一样.      •位.      •位.     有效位数:从左边第几个的数字…
1.Swift还增加了Objective-C中没有的类型比如元组(Tuple). 元组可以让你创建或者传递一组数据,比如作为函数的返回值时,你可以用一个元组可以返回多个值. 元组(tuples)把多个值组合成一个复合值.元组内的值可以使任意类型,并不要求是相同类型. //可以通过下标来访问元组中的单个元素let http404Error =(,"Not Found") println("The status code is \(http404Error.0)") /…
C语言一共有34种运算符,如下: 运算符分类: 1.按照功能划分: (1)算术运算符 + 加法运算符 - 减法运算符 或者负值运算符 * 乘法运算符 / 除法运算符 % 模运算符,或者取余运算符,要求%两侧均为整形 (2)关系运算符 < 小于运算符 <= 小于等于运算符 > 大于运算符 >= 大于等于运算符 == 等于运算符 != 不等于运算符 (关系运算的结果成立就为“真”==1, 不成立则为“假”==0) (3)逻辑运算符 && 逻辑与运算符 ||    逻辑或…
BlocksKit 对 oc语言的功能层.UI层进行了大量的适配,使得oc能够复合函数式编程的风格: 是oc语言的函数式编程风格改造: 将函数式风格的BlocksKit API解释为原生的功能调用: 对系统API的block方式调用的高度封装, 4.BlocksKit目录结构 BlocksKit代码存放在4个目录中分别是Core.DynamicDelegate.MessageUI.UIKit.其中: Core 存放Foundation Kit相关的Block category DynamicDe…
oc界面开发整理 ViewController.h from test82 #import <UIKit/UIKit.h> @interface ViewController : UIViewController<UITableViewDelegate, UITableViewDataSource,UISearchBarDelegate, UISearchResultsUpdating> @end ViewController.m #import "ViewControl…
目录 Objective-C 基础教程第五章,复合 什么是复合? Car程序 自定义NSLog() 存取方法get Set Tires(轮胎) 存取方法 Car类代码的其他变化 扩展Car程序 复合还是继承 小结 Objective-C 基础教程第五章,复合 什么是复合? 编程中的复合(composition)就好像音乐中的作曲(composition)一样:将多个组件组合在一起,配合使用,从而得到完整的作品. Car程序 接下来我们不再用shape作为例子来写代码了,这次用car作为例子写代码…
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button1.button2.button3,全文没有注释,去看代码逻辑才能知道这三个按钮的意思,我也是醉了! 下面的规范 有的定的比较死,大家可以根据自己团队的风格进行修改.该文章主要是OC的代码规范,有几个是Swift的规范. OC和Swift的代码规范如下: 一.VC生命周期 模块排列顺序 1. 注意…
用C语言封装OC对象(耐心阅读,非常重要) 本文的主要内容来自这里 前言 做iOS开发的朋友,对OC肯定非常了解,那么大家有没有想过OC中NSInteger,NSObject,NSString这些对象是怎么封装的?接下来我们就使用C语言来一部一部的实现这个封装. Object对象 首先我们先封装一个Object对象,我们来分析一下: 如果使用C来封装对象,我们就要用到结构体 每一个Object都有一个计数器,这个计数器用来管理对象的释放 提供一定的方法,能够retain, release, 获取…
C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call…
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack)(int data_i32); 2).声明一个外部函数指针. extern CallBack myCallBackPTR; 3).声明一个doSomeThingCount函数 void DSTCount(void); callBack.c 1).定义一个函数指针 CallBack myCallBa…
本文出处:http://www.cnblogs.com/wy123/p/6008477.html 关于统计信息对数据行数做预估,之前写过对非相关列(单独或者单独的索引列)进行预估时候的算法,参考这里. 今天来写一下统计信息对于复合索引在预估时候的计算方法和潜在问题. 本文原形来自于是个实际业务问题,某SQL在利用一个符合索引做查询的时候,发现始终会出现预估误差较大的情况, 而改变复合索引的列顺序,这个预估行数的误差会发生变化, 也就是说,Create index idx_index1 ON Ta…
今天把实现OC代码和JS代码交互的第三方库WebViewJavascriptBridge源码看了下,oc调用js方法我们是知道的,系统提供了stringByEvaluatingJavaScriptFromString函数 .现在主要是了解js是如何调用oc方法的,分享下探究过程. 源码不多,就一个头文件WebViewJavascriptBridge.h和实现文件WebViewJavascriptBridge.m, 和一个js文件,实现在js那边可以调用oc方法,也可以在oc里面调用js方法. 先…
OC泛型 泛型是程序设计语言的一种特性,他主要是为了限制类型的,比如OC中的数组,你可以限制他里面装的是NSString类型,泛型的话JAVA和C++都有的,大家要是对泛型不了解的话可以去百度一下. 泛型的基本格式 泛型声明格式:在声明类的时候,在类型后面 泛型定义格式:放在限制的类型后面 泛型的好处 提高程序员开发规范,让程序员一眼就可以看出该使用什么类型 限制类型,不允许装入其它的类型 可以使用点语法 泛型的实际操作 新建一个Person类,在里面定义一个可变的数组,然后在main.m中导入…
1.数组类 1> 回顾C语言数组 数组是一个有序的集合, 来存储相同数据类型的元素. 通过下标访问数组中的元素,下标从 0 开始. 2> 数组 数组是一个有序的集合,OC中的数组只能存储对象类型, 但是对于对象的类型没有限制. 通过 开始. NSArray:不可变数组,即:对象创建好以后,数组中元素个数不能发生变化. NSMutableArray:可变数组,即对象创建好以后,数组中的元素可以灵活进行增删改操作. 3> NSArray创建 ① 初始化方法 NSArray *names =…
完美记录交互 CSDN博客: (OC调用JS) http://blog.csdn.net/lwjok2007/article/details/47058101 (JS调用OC) http://blog.csdn.net/lwjok2007/article/details/47058795 补充::当页面被重新加载时候,js对象就需要刷新,,所以获取js对象就需要放在viewdidfinishLoad方法里面,否则在页面刷新之后就无法再使用JSContext对象…
1.利用webView控件加载本地html5或者网络上html5 2.设置控制器为webView的代理,遵守协议 3.实现代理方法webViewDidFinishLoad: 4.在代理方法中进行操作HTML5中的标签(CRUD→增删改查) 1.用类选择器或者id选择器或者标签选择器等选择要进行操作的标签 2.把选择好的标签转换成字符串 3.webView调用stringByEvaluatingJavaScriptFromString方法 应用场景:比如加载了网络上的百度链接,但是不想要它某个链接…