![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OC基础
文章平均质量分 73
青山绿水之辈
奋斗青春年华
展开
-
第一篇:OC类的约定
1.类方法》加号开头》类方法只能由类名调用》类方法中不能访问成员变量》类方法可以调用类方法》允许类方法和对象方法同名类方法的好处和使用场合》不依赖于对象,执行效率高,节省内存》能用类方法就用类方法》当方法内部不需要使用到成员变量(实例变量)时,就可以改为类方法2.匿名对象没有名称的对象称之为匿名对象有名称的对象:用一个指针来接收了对象原创 2015-09-10 19:31:34 · 647 阅读 · 0 评论 -
第十五篇:OC中 分类,关键字protocol 协议的声明与应用
1. 协议的定义:》协议就是用来声明一大堆方法的。@protocol 协议名称 // 方法声明列表..........@end2. 如何遵守协议 :》类遵守协议,本类就会拥有它遵守的协议所有的方法:@interface 类名 : 父类名 ............. // 类的声明@end》协议遵守协议,本协议就会拥有其他协议所有的方法:原创 2015-09-14 22:05:57 · 1691 阅读 · 2 评论 -
第九篇:OC中的万能指针id 及 构造方法的实现与应用
1.万能指针 id :》相似点:id 与 NSObject * 类型等价;》不同点:# NSObject 是所有类的基类,NSObject * 类型的指针只代表它自己的一种类型指针;而 id类型指针代表所有的类型指针。 # 在表现出多态时, NSObject * 需要强制类型转化,而id类型指针不需要。原创 2015-09-11 21:46:35 · 676 阅读 · 0 评论 -
第三十八篇:CAKeyframeAnimation--+CAShapeLayer+UIBezierPath用法,关键帧动画
有个很关键的属性:rotationMode// 把rotationMode设置=kCAAnimationRotateAuto根据曲线的切线自动旋转 keyframeAnimation.rotationMode =kCAAnimationRotateAuto ;//// ViewController.m// CAKeyframeAnimation--+CAShape原创 2017-03-24 21:14:38 · 1040 阅读 · 0 评论 -
第四十二篇:IOS 的 sqlite3 一些基本使用
一、sqlite3 使用操作 前提:在项目中导入 libsqlite3.0.tdb 数据库。1.sqlite3 相关一些基本函数用法:1.1、打开数据库SQLITE_API int sqlite3_open( constchar *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb原创 2017-06-23 11:29:47 · 2044 阅读 · 0 评论 -
第四十篇:GCD 多线程
一、Operation Objects1、相关类1)NSOperation 基类: 基类,用来自定义子类 operation object 。继承 NSOperation 可以完全控制 operation object 的实现,包括修改操作执行和状态报告的方式。2)NSInvocationOperation: 可以直接使用的类,基于应用的一个原创 2017-06-14 14:44:16 · 1457 阅读 · 0 评论 -
第四十一篇:微信第三方登录
登录前效果图:登录后效果图:一、准备工作第一步:下载友盟SDK,下载友盟SDK 根据需要选择下载,下载完成后把 UMSocial 文件添加到工程中;第二步:添加配置,在 Build Settings --> Linking --> Other Linker Flags --> Debug 或 Release 对应的行后加入-ObjC ,注意不要写为-Objc原创 2017-06-15 16:54:48 · 1181 阅读 · 0 评论 -
第四十三篇:iOS链式编程Block
链式编程可以用点语法调用对象方法 如self.add(22).add(22).add(22);示例如下@interface ViewController ()@property (nonatomic , assign) NSInteger totale ;@endtypedef ViewController *(^ADDBlock)(NSInteger);@implementation View原创 2017-08-16 15:02:22 · 331 阅读 · 0 评论 -
第四十四篇:iOS使用 runtime 与 响应式编程 KVO 原理
响应式编程 KVO 的原理1.简单实现 KVO功能一开始 self.person 的 isa 指针类型为 Person,当控制器被触摸时 self.person.age += 1 (调用了 Person 类的 setAge: 方法), 然后会调用监听方法,如下:-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)obje原创 2017-08-16 22:05:31 · 559 阅读 · 0 评论 -
IOS 错误信息集及解决问题
1. 今天上传包到 AppStore 时遇到了 ERROR ITMS-90034: "Missing or invalid signature........." 这个错误,之前钥匙串里证书过期了,就把所有的证书都设置为始终信任,于是改回为系统默认之后,再次提交成功了.原创 2017-08-10 20:04:37 · 406 阅读 · 0 评论 -
第四十五篇:ReactiveCocoaObjC使用
引导:首先如果要使用 ReactiveCocoaObjC 第三方框架就先需要导入该框架,我导入时使用了 cocoapods 导入的,在 podfile 文件中输入以下的内空:use_frameworks!target 'ReactiveCocoaDome' do pod 'AFNetworking', '~> 3.0.4' pod 'ReactiveObjC', '~> 3.0.0'e原创 2017-08-27 21:40:01 · 2980 阅读 · 0 评论 -
第四十六篇:MAC下使用 Node.js 实现一个 WebServer 服务器
引序:Node.js 采用一系列“非阻塞”库来支持事件循环的方式。Node.js是一个服务器端 JavaScript 解释器 , 也就是说 Node.js 是一个支持 JavaScript 语法编写服务器代码的环境。 // 代码在 github 上的链接 QJWebServerDome 的 git 地址在这里在MAC下用命令安装 Node.js安装 Homebrew ruby -e原创 2017-09-08 18:50:36 · 5353 阅读 · 0 评论 -
第十七篇:计算代码行数练习代码
用到Foundation中的一些类:NSManagerNSStringNSArray//// main.m// 10-计算代码行数//// Created by xxx on 15/9/16.// Copyright (c) 2015年 itcast. All rights reserved.//#import int countLineOfFile(原创 2015-09-16 11:23:22 · 1288 阅读 · 0 评论 -
第十六篇:OC中的Foundation框架练习
Foundation框学习推存博客:// Fundation#import // 14. 自定义一个Ball类,有一个颜色属性(只有黑色和白色)。typedef enum _BallColor{ BallColorRed, BallColorBlack,}BallColor;@interface Ball : NSObject@property原创 2015-09-15 21:48:26 · 1484 阅读 · 0 评论 -
第二篇:OC中类的继承
1.类继承的形式:@interface 子类A : 父类B........@end实现子类:@implementation 子类A.........//方法的实现@end2.继承的性质:》当A类继承了B类,A类就拥有了B类的 所有 成员变量 和 方法》在子类中不仅可以重写父类当中的对象方法,也可以重写父类当中的类方法》子类当中不能定原创 2015-09-10 22:08:48 · 744 阅读 · 0 评论 -
第四篇:OC中的多态应用
1.什么是多态:》多态就是某一类事物的多种形态 如:猫 == 猫 == 动物 男人 == 男人 == 人 == 高级动物2.多态的前提:没有继承就没有多态3.多态代码的体现:用父类类型的指针指向了子类对象,这就是多态》例如:猫类 继承了 动物类 猫类 *p1 = [猫类 new];原创 2015-09-10 23:31:57 · 809 阅读 · 0 评论 -
第三篇:OC中 使用%@打印值时会调用description方法
1.在OC中description方法是属于NSObject类的方法:》对像方法:- (NSString *) description ;》类方法 :+ (NSString *) description ;2.当使用%@打印一个对象的时候会去调用对象的description方法:》假设有一个Iphone类,有很多属性,现在定义一个对象:Iphone *cp = [Iphon原创 2015-09-10 22:31:13 · 849 阅读 · 0 评论 -
第五篇:OC中特有的 点语法 对成员变量赋值与取值
1.在OC中 点语法 是特有的,只是用来对成员变量赋值与取值:// 声明Iphone类@interface Iphone : NSObject { int _cpu ;}// 按照约定的赋值方法- (void)setCpu(int )cpu;// 按照约定的取值方法- (int)cpu;@end//实现Iphone类原创 2015-09-11 00:15:07 · 1753 阅读 · 0 评论 -
第十篇:new方法原理及注意点
1.new方法是NSObject类的类方法:+ (id)new;》原理:就是两个步骤:# 第一步:创建类对象分配内存;# 第二步:初始化》所以我们可以根据new原理来写与new方法原理相同的类方法,按照约定的格式:+(id)类名;》假设在Iphone类中实现:+ (id)iphone { return [ [self alloc] init ] ; //创建 与 初始化;原创 2015-09-12 00:18:43 · 639 阅读 · 0 评论 -
第七篇:类的本质与isa指针及SEL指针的关系
1.》两指针所在的类:isa指针 和 SEL指针 是属于NSObject基类。 》类的本质:即是一个结构体。2.当创建一个类后:》定义对象:类 * p = [类 new] ;》在定义一个对象之前,在堆内存中就先存在了一个该类的类类型对象,其中有一个SEL指针就是指向在代码区内该类的第一个方法。》定义一个对对象之后,在堆内存中创建了一个该类的对象,该对象包含了原创 2015-09-11 17:04:30 · 863 阅读 · 0 评论 -
第八篇:编译器特性:关键字property与synthesize用法
1.property关键字:》property 是一个编译器特性。(1)在:xcode4.4版本以前》用法:@property 指定成员变量类型 指定去掉下划线的成员变量名 ;》用于在类声明中自动生成指定的 成员变量 set / get 方法(赋值 / 取值)的声明。@interface Iphone : NSObject{ int _cpu ;}原创 2015-09-11 20:09:20 · 561 阅读 · 0 评论 -
第六篇:OC类的成员变量的作用域
1.关键字:》@public ,@protected, @private ,@package2.@public作用域:》当成员变量属性为@public时,可以在其它文件中直接访问。》当成员变量属性为@public时,可以在其子类的方法中直接访问。3.@protected作用域:》OC中成员变量默认的关键字。》不能在其它文件中直接访问,可通过该类的方法间接原创 2015-09-11 14:01:07 · 863 阅读 · 0 评论 -
第十一篇:OC中类的互引用问题及解决方法
1.类的头文件互引用:》表现:在两个类A,B的声明中,A.h文件中导入了B.h,并且B.h文件中导入了A.h。 A.h文件中: #import #import "B.h" @interface A : NSObject ......... @end原创 2015-09-12 14:54:35 · 4232 阅读 · 0 评论 -
第十二篇:OC中的对象内存管理都是对 对象引用计数器 进行管理
1.对象引用计数器:》引用计数器分两种:ARC 自动引用计数(xcode 默认) ,MRC 手动引用计数。》当创建一个对象时:Iphone * ip = [ [Iphone alloc] init ] ; ip这个对象的引用计数变成1.》当对象的引用计数是0的时候,系统立即把它回收。》当一个对象调用 retain 时(前提为MRC,ARC是请允许调用) :[ ip retain原创 2015-09-12 16:59:25 · 1047 阅读 · 4 评论 -
第十三篇:ARC自动引用计数器原理
1.指针分2种:》强指针:默认情况下,所有的指针都是强指针 __strong。》弱指针:__weak。说明:当一个弱指针指向一个创建出来的对象,而之后没有强指针指向该对象,那么该对象会在内存中被释放,弱指针被赋值成空 nil 。 代码表现形式: Dog * p1 = [ [Dog alloc] init ] ; // p1 为强指针,指向新创建出来的对象,引用计数器原创 2015-09-13 23:56:25 · 931 阅读 · 1 评论 -
第十四篇:OC中block存储代码块的定义与应用
1.如何定义block变量,形式:返回值类型 (^block变量名)(参数)》形式一求和的block变量: int (^sumBlock)(int , int ) ;》形式二:void (^voidBlock)() ;2.如何利用block封装代码: ^(int a , int b) { return a + b ;} ; // 有一个分号“ ; ”原创 2015-09-14 20:14:33 · 1685 阅读 · 0 评论 -
第四十七篇:实现 服务端 与 客户端 之间 Socket 即时通讯
QJWebSocketDome简介本 Dome 基于 Socket框架, 主要的功能就是即时通讯功能,创建房间,并与发送信息给所有在房间内的客户端,与QQ群相似,群的人数可以是’>’=2个人在房间内。 Socket 即时通讯的 服务端 与 客户端 dome使用过程1、启动 Socket 服务器 node 01-搭建socket服务器.js2、打开 socketClientDome 工程,原创 2017-09-08 22:48:16 · 878 阅读 · 0 评论