自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mardax的专栏

厚积薄发

  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 foundation——容器——创建 初始化

foundation——集合——创建 初始化

2017-03-31 00:47:21 455

原创 runtime——Class——create

runtime——Class——interface implementation

2017-03-27 20:09:43 291

原创 runtime——Class——属性

objc_property_t/// An opaque type that represents an Objective-C declared property.typedef struct objc_property *objc_property_t;/// Defines a property attributetypedef struct { const char *name; /**< The name of the attribute */ co

2017-03-24 22:01:03 417

原创 runtime——Class——协议

runtime——Class——协议

2017-03-24 22:00:00 258

原创 runtime——Class——方法成员

SEL/// An opaque type that represents a method selector.typedef struct objc_selector *SEL;OBJC_EXPORT const char *sel_getName(SEL sel) __OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);OBJC_EXPORT SEL sel_registerName(const char *str) __OSX_A

2017-03-24 21:57:37 342

原创 runtime——Class——数据成员

Ivarstruct objc_ivar { char *ivar_name OBJC2_UNAVAILABLE; char *ivar_type OBJC2_UNAVAILABLE; int ivar_offset OBJC2_UNAV

2017-03-24 19:39:22 303

原创 runtime——Class——基本信息

apiconst char *name OBJC2_UNAVAILABLE;long version OBJC2_UNAVAILABLE;OBJC_EXPORT const char *class_getName(Class cls) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHON

2017-03-24 17:18:16 222

原创 runtime——Class——体系结构

apiClass isa OBJC_ISA_AVAILABILITY;Class super_class OBJC2_UNAVAILABLE;OBJC_EXPORT Class class_getSuperclass(Class cls) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0);OBJC_EXPORT Class class_setSupercl

2017-03-24 16:05:48 359

原创 runtime——核心数据类型

objc_class&Classstruct objc_class { Class isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__ Class super_class OBJC2_UNAVAILABLE; const char *name OBJC2_UNAVAILABLE;

2017-03-24 12:21:25 264

原创 runtime备份

NSObject@protocol NSObject//...@property (readonly) Class superclass;- (Class)class OBJC_SWIFT_UNAVAILABLE("use 'anObject.dynamicType' instead");- (instancetype)self;- (BOOL)isKindOfClass:(Clas

2017-03-24 12:06:09 269

原创 oc——隐式转换——类类型

类继承体系@interface FBAnimal : NSObject{ int _food1; int _food2;}- (void)dataOffset;@end@interface FBAnimal (){ int _food3; int _food4;}@end@interface FBAnimal (){ int _food5; int _food6;}@end@implementation FBAnim

2017-03-23 19:17:00 869

原创 oc——类——instancetype

instancetype在一些对象创建和初始化方法中,常看到方法返回类型为instancetype,比如NSObject中+ (instancetype)new OBJC_SWIFT_UNAVAILABLE("use object initializers instead");+ (instancetype)allocWithZone:(struct _NSZone *)zone OBJC_SWIFT_UNAVAILABLE("use object initializers instead");+

2017-03-23 17:46:56 445

原创 oc——类——初始化

概述iOS 中对象创建是分两步完成:分配内存初始化对象数据成员创建NSObject对象的过程:苹果官方有一副图片更生动的描述了这个过程:初始化方法c++类有构造函数,构造函数负责实例对象初始化,构造函数函数名与类名一致,易识别,且会自动调用oc类没有构造函数,但有类似构造函数的初始化方法,初始化函数与类名不一致,且不会自动调用oc类初始化方法特征:instance methodMethod返回类型为instancetypeMethod的SEL以init起始初始化方法分类:

2017-03-23 17:37:25 923

原创 oc——类——__strong __weak __unsafe_unretained

概述__strong:强引用,改变instance object RC,instance object指针默认为__strong__weak:弱引用,不改变instance object RC,当RC = 0 dealloc时,__weak instance object指针置nil__unsafe_unretained:顾名思义,unsafe和unretained,不改变instance object RC,当RC = 0,dealloc时,__unsafe_unretained instance

2017-03-20 23:32:04 478

原创 oc——类——MRC ARC

RCreference counting,引用计数,instance object内存管理机制,表示instance object被多少个指针引用或拥有RC = 0时,instance object自动调用dealloc,instance object销毁,因此勿手动调用dealloc,否则会导致多次调用dealloc(多次销毁instance object)MRCmannul reference counting,手动引用计数,一种RC管理机制,开发者手动管理RC,MRC机制易导致RC混乱,引

2017-03-20 23:27:35 261

原创 oc——类——属性

概述property是oc提供的代码生成机制(代码缩写机制),目的为了提高开发效率(节省代码敲入量)property@property@property出现在interface中,用来合成Method声明,因此置于interface的{}外@interface FBAnimal : NSObject@property int age;@property UIColor *color;@end本质就是在interface中合成以下Method声明@interface FBAnim

2017-03-15 00:59:46 494

原创 oc——类——协议

概述协议,protocol,是一种特殊的interface,这种特殊的interface不允许定义数据成员,允许声明Method,protocol纯粹作为接口使用,因此没有对应implementationprotocol不允许定义数据成员protocol允许声明Method,包括instance method(-)和class method(+),protocol没有对应implementationprotocol可继承protocol,而且支持多继承,protocol继承本质是union父pro

2017-03-15 00:58:36 545

原创 oc——类——类别

概述类别,category,是对类的implementation进行模块化设计,把implementation分散到不同的模块中允许声明Method的interface:primary class interface,extension interface,category interface允许定义Method的implementation:primary class implementation,category implementationcategory是对类的implementation

2017-03-15 00:57:38 484

原创 oc——类——方法成员

方法成员类方法成员有instance method(-)和class method(+),分别存储于class object和meta-class object,存储在class object(meta-class object)的methodLists中struct objc_method { SEL method_name OBJC2_UNAVAILABLE; char *method_types

2017-03-14 16:25:40 505

原创 oc——类——数据成员

数据成员类只有instance object数据成员,没有class object数据成员,因此数据成员存储在class object(非meta-class object)的ivars中struct objc_ivar { char *ivar_name OBJC2_UNAVAILABLE; char *ivar_type

2017-03-14 16:24:25 352

原创 oc——类——成员访问权限

成员访问权限@interface FBAnimal : NSObject{ int _food1; @private int _food2; @protected int _food3; @package int _food4; @public int _food5;}@end@interface FBAnimal (){ int _food6; @private int _food7

2017-03-14 02:12:25 703

原创 oc——类——声明 定义 实现

声明类的声明,又称类的前向声明,即forward declaration,告诉编译器class类型,但当前并不知道class具体细节,是不完全类型类的声明只能用于指针类型,因为指针类型字长固定,编译器知道分配多少内存空间,如何操作指针类型类的声明不能用于对象(instance object&class object),因为对于instance object,编译器需要知道class object内容,对于class object,编译器需要知道meta-class object内容@class F

2017-03-14 01:52:20 1454

原创 oc——类——体系结构

类体系结构类核心数据结构objc_class&Classstruct objc_class { Class isa OBJC_ISA_AVAILABILITY;#if !__OBJC2__ Class super_class OBJC2_UNAVAILABLE; const char *name OBJC2_

2017-03-13 22:24:15 547

原创 cpp——与c之不同——初始化

初始化c支持复制初始化,不支持直接初始化void init(){ int i1 = 5; //int i2(8);}c++支持复制初始化,支持直接初始化引入直接初始化主要为了支持类的初始化(构造函数),c++为了保持类型统一性,对非类类型也支持直接初始化对于非类类型,直接初始化和复制初始化无区别对于类类型,直接初始化可使用implicit构造函数,也可使用explicit构造函数,复制初始化可使用implicit构造函数,不可使用explicit构造函数,且复制初始

2017-03-13 21:05:48 324

原创 cpp——与c之不同——static const

staticcstatic在c中是一个多义词,可修饰全局对象和局部对象修饰全局对象:对应中文为"内部的",修饰对象作用域修饰局部对象:对应中文为"静态的",修饰对象存储方式(生命周期)static全局对象static int g_static_food = 5; //static全局数据对象定义static void feed(int rice, int meat); //static全局函数对象声明static void feed(int rice, int meat) { p

2017-03-13 20:56:11 485

原创 cpp——与c之不同——函数

cpp——与c之不同——static const

2017-03-13 20:43:34 393

原创 cpp——与c之不同——struct union

structcstruct是不同数据类型的聚集体,通过相对于struct首地址的offset获取struct成员,struct每个成员保存了相对于struct首地址的offset和自身字长c++struct等同于class,除了默认成员访问权限和默认继承方式不同class默认成员访问权限为private,默认继承方式为privatestruct默认成员访问权限为public,默认继承方式为publicclass CAnimal{ int food1; public:

2017-03-13 20:42:52 395

原创 cpp——与c之不同——指针

void*cvoid void_pointer(){ int i = 5; void* pv = &i; int* pi = pv; printf("sizeof(void) = %ld\n", sizeof(void)); printf("pv = %p, pi = %p, *pi = %d\n", pv, pi, *pi); pv++; printf("pv = %p\n", pv); pv += 5

2017-03-13 20:40:50 583

原创 cpp——显式类型转换

显式转换,又称强制转换显式转换尽可能少用,如果程序使用了大量显式转换,本身就是程序设计有问题,显式转换是告诉程序读者和编译器,此处存在安全隐患static_cast,静态转换class B{};class D : public B{};int main(){ int i; double d; i = static_cast(d);

2017-03-11 14:51:17 339

原创 cpp——隐式转换——类类型

概述#pragma pack(4)class CAnimal{public: char name[3]; short age; int color; char gender;};class CDog : public CAnimal{public: int hurt;};void mem_offset(){ CAnima

2017-03-11 14:48:26 527

原创 cpp——复合类型——函数——运算符重载

cpp——复合类型——函数——运算符重载

2017-03-06 16:06:46 530

原创 cpp——复合类型——函数——函数重载

cpp——复合类型——函数——函数重载

2017-03-06 16:05:45 468

原创 cpp——复合类型——函数——匿名形参 默认实参

匿名形参c++允许形参匿名,匿名形参主要用来占位,待以后完善,因为形参匿名,因此函数体中无法访问void feed(int, int){ cout << "feed(int, int)" << endl;}void call_feed(){ //feed(); //feed(5); feed(5, 8);}默认实参默认实参本质就是在函数调用时,从函数声明(引用性声明和定义性声明)中获取默认实参值代替当前函数调用中相应位置实参的缺失,显然编译期代替可为

2017-03-01 09:13:51 763

原创 cpp——复合类型——引用

引用引用本质为const指针,引用基础类型为指针指向的目标类型,只是表现的像非指针,以此来降低指针使用复杂度,因此引用必须初始化引用的指针属性void ref_pointer(){ int i1 = 5; int i2 = 8; int* pi = &i1; int& ri = i1; cout << "&i1 = " << &i1 << ", &i2 = " << &i2 << endl; cout << "----

2017-03-01 08:03:34 570

空空如也

空空如也

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

TA关注的人

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