自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

viiimaus的博客

生命不止,折腾不息

  • 博客(37)
  • 资源 (11)
  • 收藏
  • 关注

原创 编写高质量OC代码52建议总结:24.将类的实现代码分散到便于管理的数个分类中

类中经常会被填满各种方法,这些方法经常会被堆在一个实现文件里。这种情况下可以通过OC中的“分类机制”,把类按逻辑划入几个分区中。/* NSURLRequest.h Copyright (c) 2003-2016, Apple Inc. All rights reserved. Public header file.*/#import #imp

2017-02-28 13:44:55 1332

转载 Swift3.0 -- 新的访问控制fileprivate和open

在swift 3中新增加了两种访问控制权限 fileprivate和 open。下面将对这两种新增访问控制做详细介绍。fileprivate在原有的swift中的 private其实并不是真正的私有,如果一个变量定义为private,在同一个文件中的其他类依然是可以访问到的。这个场景在使用extension的时候很明显。class User { private var name

2017-02-28 09:28:33 861

原创 Swift3.0 -- 设置设备方向支持

/* portrait : 竖屏 landscape : 横屏 - viewController中实现的方法 - 使用代码控制设备的方向,可以在需要横屏的时候单独处理 - 设置支持的方向之后,当前的控制器及子控制器都会遵守这个方向 - 如果播放视频,通常是通过 modal 展现的 */ ove

2017-02-27 15:44:17 1481

原创 编写高质量OC代码52建议总结:23.通过委托与数据源协议进行对象间通信

委托模式:定义一套接口,某对象如果想接受另一个对象的委托,需要遵循此接口,成为其“委托对象”。 例如:要编写一个从网站获取数据的类,此类也许要从远程服务器的某个资源里获取数据。那个远程服务器可能很久之后才会有反应。这种情况下,我们可以使用委托模式。获取网络数据的类中含有一个“委托对象”,获取完数据后,它会回调这个委托对象。EOCDataModel对象就是EOCNetworkFetcher的委托

2017-02-27 11:51:04 1088

原创 编写高质量OC代码52建议总结:22.理解NSCopying协议

如果想令自己的类支持拷贝操纵,就要实现NSCopying协议 -(id)copyWithZone:(NSZone *)zone{ return nil; } NSZone:以前开发程序时,会把内存分为不同的区,对象会创建在某个区里。现在不用,每个程序都会有一个默认区,这个参数不用管。。。  copy方法由NSObject实现,当我们想要覆写copy方法是,实际需要实

2017-02-24 11:52:53 945

原创 编写高质量OC代码52建议总结:21.理解Objective-C的错误模型

"自动引用计数"在默认情况下不是异常安全的,具体说,如果抛出异常,本应该在作用于末尾释放的对象就不会释放了。id someResource = @""; if (someResource/* check for error */) { @throw [NSException exceptionWithName:@"ExceptionName" reason:@"Ther

2017-02-21 11:04:38 1480

原创 Swift3.0 -- setTitleTextAttributes、CGRectInset、@objc

setTitleTextAttributes、CGRectInset、@objc

2017-02-20 19:20:46 5084

原创 编写高质量OC代码52建议总结:20.为私有方法加前缀

应该为私有方法的名称加上某种前缀,这样方便调试,也有助于把公有方法和私有方法区别开。 OC没办法把方法设置为私有的,每个对象都可以响应任意消息,而为可以在运行期检视某个对象所能直接相应的消息,根据给定的消息查出对应的方法,开发者只有在命名上体现私有方法。 总结: 1.给私有方法的名称加上前缀,可以区分公有方法和私有方法。 2.不要单用一个下划线作为私有方法的前缀。

2017-02-20 16:36:35 1234

原创 编写高质量OC代码52建议总结:19.使用清晰而协调的命名方式

类、方法及变量的命名是Objective-C编程的重要环节。通常会觉得OC的语言很繁琐,因为其语法结构使代码读起来和句子一样。  [@"asdasdas" stringByReplacingOccurrencesOfString:@"a" withString:@"b"];  此段代码看起来比较繁琐,但是准确的表达了开发者想做的事  方法与变量名使用了“驼峰命名”,以小写字

2017-02-20 16:16:12 1675

原创 Swift3.0 -- 使用字典创建子视图(NSClassFromString创建类的实例)

import UIKit//主控制器class LYKMainViewController: UITabBarController { override func viewDidLoad() { super.viewDidLoad() setupChlidControllers(); }}/* extension

2017-02-17 15:15:23 1549

转载 OC最实用的runtime总结

前言runtime的资料网上有很多了,部分有些晦涩难懂,我通过自己的学习方法总结一遍,主要讲一些常用的方法功能,以实用为主,我觉得用到印象才是最深刻的,并且最后两个demo也是MJExtension的实现原理,面试的时候也可以多扯点。另外runtime的知识还有很多,想要了解更多可以看我翻译的官方文档(有点枯燥),本文的demo下载地址什么是runtime?runtime 是 OC

2017-02-17 14:22:55 7750

转载 AFNetwork 作用和用法详解

AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包括GET、POST、 PUT、DELETE等)。支持ARC。Github地址:https://github.com/AFNetworking/AFNetworking

2017-02-17 14:21:38 7795

原创 编写高质量OC代码52建议总结:18.尽量使用不可变对象

一般情况下,我们需要建模的数据未必需要改变。具体到编程实践中,应该尽量吧对外公布出来的属性设为只读,而且只在有必要的时候才对外公布。如果试着改变属性值,编译器就会报错。对象中的属性值可以读取,但是不会写入。开发者在使用对象时就能确定其底层数据不会改变。 即使属性为只读(没有setter方法),也应该设置内存管理语义,如果以后想修改为读写属性,就会简单一些。 在对象外部仍可以通过“键值编码”

2017-02-17 14:16:55 955

原创 编写高质量OC代码52建议总结:17.实现describtion方法

1.实现describtion方法返回一个有意义的字符串2.在调试中打印出详细的信息,实现debugDescription方法

2017-02-16 18:20:40 804

原创 编写高质量OC代码52建议总结:16.提供“全能初始化方法”

在类中提供一个全能初始化方法,并于文档中指明。其他初始化方法均应调用此方法。若全能初始化方法与超类不同,则需覆写超类中的对应方法。如果超类的初始化方法不适用于子类,应该覆写这个超类的方法,并在其中抛出异常。

2017-02-16 16:54:16 719

原创 Swift3.0 -- 构造函数

//// ViewController.swiftimport UIKit/** 在swift中,同一个项目中(同一个命名空间),所有的类默认都是共享的,不需要引用,可以直接访问,不需要import 所有对象的属性 var,也可以直接访问到 */class ViewController: UIViewController { override func viewDi

2017-02-15 11:36:42 1080

原创 Swift3.0 -- 闭包的循环引用与OC的对比

block

2017-02-14 13:49:26 4364

原创 Objective-C:错误处理

Objective-C:错误处理

2017-02-14 13:42:12 2114

原创 编写高质量OC代码52建议总结:13.用“方法调配技术”调试“黑盒方法”

1.在运行期,可以向类中新增和替换所对应的方法实现。2.使用另一份实现来替换现有的方法实现,“方法调配”,常用于向原有实现中添加新功能。3.一般情况,只有调试程序的时候才使用此方法。

2017-02-14 13:39:47 855

原创 编写高质量OC代码52建议总结:12.理解消息转发机制

--1.若对象无法响应某个选择子,则进入消息转发流程。--2.通过运行期的动态方法解析功能,我们可以在需要用到某个方法时再将其加入类中。--3.对象可以把其无法解读的某些选择子转交给其他对象来处理。--4.如果还没办法处理选择子,那就启动完整的消息转发机制。

2017-02-13 18:37:59 2829

原创 Swift3.0 -- 反射机制Demo&动态调用命名空间

Swift3.0 -- 反射机制Demo&动态调用命名空间

2017-02-13 10:51:02 1286

原创 Swift3.0 -- didSet(OC中重写setter方法)

//// DemoLabel.swiftimport UIKitclass DemoLabel: UILabel { //模型 -> 给视图设置模型,由视图自己根据模型的数据,决定显示的内容 var person: Person? { //替代OC中重写setter方法,didSet没有代码提示 //区别:不用考虑 _成员变量 = 值!

2017-02-09 20:43:02 5852

原创 编写高质量OC代码52建议总结:11.理解objc_msgSend的作用(消息机制)

在对象上调用方法,术语叫做“传递消息”,消息有“名称”和“选择器(方法)”,可以接收参数,还可能有返回值。OC是C的超集,C语言使用静态绑定,在编译期间就能决定运行时做调用的函数。#include void printHello() { printf("hello, world!\n");}void printGoodbye() { printf("Goodbye,

2017-02-09 19:34:42 9626

原创 Swift3.0 -- get & set 方法

Swift中的get & set 方法只读属性 readonly,计算型属性计算型属性和懒加载的区别

2017-02-09 19:26:53 13360 1

转载 iOS的TCP/IP协议族剖析&&Socket

简介该篇文章主要回顾--TCP/IP协议族中的TCP/UDP、HTTP;还有Socket。(--该文很干,酝酿了许久!你能耐心看完吗?)我在这个文章中,列举了常见的TCP/IP族中的协议,今天主角是--传输层协议。传输层(Transport Layer)是OSI(七层模型)中最重要、最关键的一层,它负责总体的数据传输和数据控制的一层,传输层提供端到端(应用会在网卡注册一个端口号)的

2017-02-09 17:16:26 1212

转载 iOS绘图教程

Core Graphics Framework是一套基于C的API框架,使用了Quartz作为绘图引擎。它提供了低级别、轻量级、高保真度的2D渲染。该框架可以用于基于路径的绘图、变换、颜色管理、脱屏渲染,模板、渐变、遮蔽、图像数据管理、图像的创建、遮罩以及PDF文档的创建、显示和分析。为了从感官上对这些概念做一个入门的认识,你可以运行一下官方的example code。 iOS支持两套

2017-02-09 16:09:29 959

转载 位图图像原图修改

(via:泰然网) 想象一张最好的生活自拍照。它是很高大尚滴并且以后会有用武之地。转发,票选将会使你获得成千上万份的关注,因为它确实很酷很帅。现在,如果你有什么办法,可以让它看起来更加的高大尚。。。 这就是图形图像处理要做到的!它可以让你的照片带上更多的特殊效果,比如修改颜色,与其它的图片进行合成等等。 在这两部分教程中,你需要先弄明白一些图形图像处理的基础知识。接着,你可

2017-02-09 16:07:07 1796

原创 Swift3.0 -- 懒加载和OC的区别

OC的懒加载#import "DemoViewController.h"@interface DemoViewController ()@property (nonatomic, strong) UILabel *label;@end@implementation DemoViewController- (void)viewDidLoad { [super viewDi

2017-02-09 09:37:53 1311

原创 Swift3.0--懒加载

////  ViewController.swiftimport UIKitclass ViewController: UIViewController { //初始化并且分配空间,会提前创建 //移动开发,延迟加载,减少内存消耗,就是懒加载 //懒加载 - lazy /** 1.能够延迟创建 2.能够解除解包的烦恼(最大的好处)

2017-02-08 20:23:20 1754

原创 编写高质量OC代码52建议总结:9.以“族类模式“隐藏实现细节

以 UIButton为例  + (instancetype)buttonWithType:(UIButtonType)buttonType;类方法创建button,其类型取决于传入的按钮类型。    按钮类型  typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0,

2017-02-08 19:45:13 527

原创 编写高质量OC代码52建议总结:10.关联对象

OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)  OBJC_EXPORT id objc_getAssociatedObject(id object, const void *key)  OBJC_EXPORT voi

2017-02-08 19:39:57 562

原创 Swift3.0--运行时加载属性列表

import UIKitclass Person: NSObject { var name: String?; var age: Int = 0; var title: String?; //private,在运行时同样获取不到属性,(可以获取到ivar),同样会让KVC崩溃 // private var title: String?;

2017-02-08 15:51:09 4265

原创 AVPlayer 新增属性 automaticallyWaitsToMinimizeStalling

iOS 10下,AVplayer新增属性 automaticallyWaitsToMinimizeStalling。苹果官方文档地址https://developer.apple.com/reference/avfoundation/avplayer/1643482-automaticallywaitstominimizestalHTTP Live Streaming (HLS

2017-02-08 13:54:57 7695

原创 AVplayer的使用教程

GitHub地址公司做视频服务的,写了一个播放器Demo。主要功能都已经实现,自己再插入几个控制控件。先梳理几个问题:1.AVplayer的播放2.uislider进度条3.全屏模式4.单个页面强制横屏

2017-02-08 12:08:10 11427

原创 编写高质量OC代码52建议总结:1~8

#pragma mark -- 1.了解OC的起源 /* 不说了。。。。 */#pragma mark -- 2.在类的头文件中尽量少引用其他类的头文件 /* 1.在编译一个类文件时,不需要知道类的全部细节,编译时,会引入很多用不到的细节,增加编译时间 2.除非有必要,请在.m文件中引入其他类的头文件,可以降低类之间的耦合 */#pragma mark -- 3.多

2017-02-07 14:40:47 2351

转载 ObjC的initialize和init

Objective-C很有趣的一个地方是,它非常非常像C。实际上,它就是C语言加上一些其他扩展和一个运行时间(runtime)。有了这个在每个Objective-C程序中都会起作用的附加运行时间,给了它一些动态的特性。C和C++没有运行时间,他们仅仅被编译为完全按照代码的顺序去执行,不多也不少。Objective-C中带有运行时间的好处是,它可以在你的程序运行的流程中进行参与。在Objec

2017-02-06 10:07:56 735

转载 NSLog,LLDB, Breakpoint,EXC_BAD_ACCESS,Address Sanitizer ,iOS开发之Xcode常用调试技巧总结

一、Xcode调试技巧之:NSLog上面也提到了,在我们日常的开发过程中最常见的Debug方式就是打Log。而在OC语言中,打Log是采用NSLog方法。但是NSLog效率低下,具体原因可以看这篇博客(《NSLog效率低下的原因及尝试lldb断点打印Log》)。所以在平时的开发过程中,能不打Log就不打Log。实在想打Log网上也有对NSLog的一些优化方法,可以阅读王巍的《宏定义的黑魔法

2017-02-06 10:05:17 1418

多线程编程指南

多线程编程指南

2017-08-11

计算机程序设计艺术(中文版)第二卷:半数值算法

计算机程序设计艺术(中文版)第二卷:半数值算法

2017-06-01

iOS20个精品源码(二)

iOS20个精品源码(二)

2017-03-30

iOS20个精品源码(一)

iOS20个精品源码(一)

2017-03-30

The Swift Programming Language 中文版 - v1.8

The Swift Programming Language 中文版 - v1.8

2017-02-17

object-c.2.0程序设计

object-c.2.0程序设计

2017-02-14

OS X与IOS内核编程

OS X与IOS内核编程

2017-02-06

Objective-C编程之道:IOS设计模式解析

Objective-C编程之道:IOS设计模式解析

2017-02-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除