Class 类的本质 - iOS

版权声明:本文为博主原创,如需转载请注明出处。

1 类也是个对象

  • 其实类也是一个对象,是 Class 类型的对象,简称 “类对象”
  • Class 类型的定义
1
2
3
4
5
6
7
8
9
10
11
12
#if !OBJC_TYPES_DEFINED
/// An opaque type that represents an Objective-C class.
typedef struct objc_class *Class;

/// Represents an instance of a class.
struct objc_object {
Class isa OBJC_ISA_AVAILABILITY;
};

/// A pointer to an instance of a class.
typedef struct objc_object *id;
#endif

Category 分类、类别 总结 - iOS

分类作用

分类:可以给某一个类扩充一些方法(不修改原来类的代码)

格式

1
2
3
4
5
6
7
8
9
// 声明
@interface Person (分类名称)

@end

// 实现
@implementation Person (分类名称)

@end

好处

  • 一个庞大的类可以分模块开发
  • 一个庞大的类可以由多个人来编写,更有利于团队合作

Protocol 协议总结 - iOS

版权声明:本文为博主原创,如需转载请注明出处。

简单使用

1 基本用途

  • 可以用来声明一大堆方法(不能声明成员变量)
  • 只要某个类遵守了这个协议,就相当于拥有了这个协议中的所有方法声明
  • 只要父类遵守了某个协议,就相当于子类也遵守了

2 格式

  • 协议的编写
1
2
3
@protocol 协议名称 <NSObject>
// 方法声明列表....
@end

Block编程总结 - iOS

版权声明:本文为博主原创,如需转载请注明出处。

没有返回值、没有形参的block

block 用来保存一段代码

block的标志:^

block跟函数很像:

  1. 可以保存代码
  2. 有返回值
  3. 有形参
  4. 调用方式一样

Automatic Reference Counting (ARC) 总结

版权声明:本文为博主原创,如需转载请注明出处。

ARC的判断准则:只要没有强指针指向对象,就会释放对象

ARC特点

  • 不允许调用 releaseretainretainCount
  • 允许重写dealloc,但是不允许调用[super dealloc]。
  • @property的参数

strong :成员变量是强指针(适用于OC对象类型)
weak :成员变量是弱指针(适用于OC对象类型)

  • 以前的retain改为用strong

指针分2钟:

  • 强指针:默认情况下,所有的指针都是强指针 __strong
  • 弱指针:__weak

Objective-C内存管理[iOS]

版权声明:本文为博主原创,如需转载请注明出处。

新博客文章地址:Objective-C内存管理
CSDN文章地址:Objective-C内存管理



1 基本原理

1.1 什么是内存管理

  • 移动设备的内存极其有限,每个 app 所能占用的内存是有限制的
  • 当app所占用的内存较多时,系统会发出内存警告,这时得回收一些不需要再使用的内存空间。比如回收一些不需要使用的对象、变量等。
  • 管理范围:任何继承了 NSObject 的对象,对其他基本数据类型(如int, char, float, double, struct, enum 等)无效

Advanced Memory Management Programming Guide 高级内存管理编程指南(官方文档翻译)[iOS]

Advanced Memory Management Programming Guide - 高级内存管理编程指南(官方文档翻译)

版权声明:本文为博主原创翻译,如需转载请注明出处。

新博客文章地址:Advanced Memory Management Programming Guide 高级内存管理编程指南(官方文档翻译)
CSDN文章地址:Advanced Memory Management Programming Guide 高级内存管理编程指南(官方文档翻译)

苹果源文档地址 - 点击这里

About Memory Management - 关于内存管理

Application memory management is the process of allocating memory during your program’s runtime, using it, and freeing it when you are done with it. A well-written program uses as little memory as possible. In Objective-C, it can also be seen as a way of distributing ownership of limited memory resources among many pieces of data and code. When you have finished working through this guide, you will have the knowledge you need to manage your application’s memory by explicitly managing the life cycle of objects and freeing them when they are no longer needed.

应用程序的内存管理是程序运行时内存分配的过程,使用它,并当你用完它的时候释放它。写得好的程序应该尽可能少的使用内存。在Objective-C,它也可以被看作是分布 数据和代码的许多块当中的有限的内存资源的所有权的方法。当您完成通过这一指南的工作,你将有一些关于你的应用程序的内存管理知识,你需要明确管理对象的生命周期,并且当他们不再需要管理时释放他们。

About HTTP Live Streaming官方文档翻译 [iOS]

新博客文章地址:About HTTP Live Streaming官方文档翻译 [iOS]
CSDN文章地址:About HTTP Live Streaming官方文档翻译 [iOS]

版权声明:本文为博主原创翻译,如需转载请注明出处。

苹果源文档地址 - 点击这里

About HTTP Live Streaming - HTTP实时流

HTTP Live Streaming (HLS) is Apple’s technology for streaming live and on-demand audio/video content to iPhone, iPad, iPod touch, Apple TV, and Mac. Central to HLS is the delivery of content using the HTTP protocol—the same protocol that powers the web. HTTP lets you easily deploy media content in streams using commonplace web servers rather than specialized streaming servers. HLS streams behave like regular web traffic. They work with preexisting caching infrastructure, such as Content Delivery Networks (CDNs), and reliably pass through typical firewalls and routers. HLS adapts to variable network conditions, dynamically adjusting playback to match the available speed of wired and wireless connections.

HTTP Live Streaming (HLS) 是苹果公司的技术,有关流媒体直播和点播音频/视频内容,支持iPhone, iPad, iPod touch, Apple TV, 和 Mac。内部 对 HLS 内容的传递 使用与HTTP协议相同的协议来处理网络服务。 HTTP可以轻松地使用普通的Web服务器,而不是专门的流媒体服务器 来部署流媒体内容。HLS流行为像常规的网络流量。工作方式为预先缓存基础结构,比如内容分发网络(CDN),以及可靠地通过典型的防火墙和路由器。HLS适应可变的网络状况,动态地调整播放以匹配有线和无线连接的可用速度。