objc.h----------------

typedef struct objc_class *Class;

struct objc_object {

Class isa  OBJC_ISA_AVAILABILITY;

};

typedef struct objc_object *id;

#if !OBJC_OLD_DISPATCH_PROTOTYPES

typedef void (*IMP)(void /* id, SEL, ... */ );

#else

typedef id (*IMP)(id, SEL, ...);

#endif

/// Type to represent a boolean value.

#if (TARGET_OS_IPHONE && __LP64__)  ||  TARGET_OS_WATCH

#define OBJC_BOOL_IS_BOOL 1

typedef bool BOOL;

#else

#define OBJC_BOOL_IS_CHAR 1

typedef signed char BOOL;

runtime.h------------------

/// An opaque type that represents a method in a class definition.

typedef struct objc_method *Method;

/// An opaque type that represents an instance variable.

typedef struct objc_ivar *Ivar;

/// An opaque type that represents a category.

typedef struct objc_category *Category;

/// An opaque type that represents an Objective-C declared property.

typedef struct objc_property *objc_property_t;

struct objc_class {

Class isa  OBJC_ISA_AVAILABILITY;

#if !__OBJC2__

Class super_class                                        OBJC2_UNAVAILABLE;

const char *name                                         OBJC2_UNAVAILABLE;

long version                                             OBJC2_UNAVAILABLE;

long info                                                OBJC2_UNAVAILABLE;

long instance_size                                       OBJC2_UNAVAILABLE;

struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;

struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;

struct objc_cache *cache                                 OBJC2_UNAVAILABLE;

struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;

#endif

} OBJC2_UNAVAILABLE;

/* Use `Class` instead of `struct objc_class *` */

struct objc_method {

SEL method_name                                          OBJC2_UNAVAILABLE;

char *method_types                                       OBJC2_UNAVAILABLE;

IMP method_imp                                           OBJC2_UNAVAILABLE;

}

struct objc_category {

char *category_name                                      OBJC2_UNAVAILABLE;

char *class_name                                         OBJC2_UNAVAILABLE;

struct objc_method_list *instance_methods                OBJC2_UNAVAILABLE;

struct objc_method_list *class_methods                   OBJC2_UNAVAILABLE;

struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;

}                                                            OBJC2_UNAVAILABLE;

struct objc_ivar {

char *ivar_name                                          OBJC2_UNAVAILABLE;

char *ivar_type                                          OBJC2_UNAVAILABLE;

int ivar_offset                                          OBJC2_UNAVAILABLE;

#ifdef __LP64__

int space                                                OBJC2_UNAVAILABLE;

#endif

}

OBJC_EXPORT void (*_error)(id, const char *, va_list)        OBJC2_UNAVAILABLE;

Object.h-----------------

@interface Object

{

Class isa; /* A pointer to the instance's class structure */

}

NSObject.h-----------------

@interface NSObject <NSObject> {

Class isa  OBJC_ISA_AVAILABILITY;

}

objc-sync.h----------------

/**

* Begin synchronizing on 'obj'.

* Allocates recursive pthread_mutex associated with 'obj' if needed.

*

* @param obj The object to begin synchronizing on.

*

* @return OBJC_SYNC_SUCCESS once lock is acquired.

*/

OBJC_EXPORT  int objc_sync_enter(id obj)

__OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);

/**

* End synchronizing on 'obj'.

*

* @param obj The objet to end synchronizing on.

*

* @return OBJC_SYNC_SUCCESS or OBJC_SYNC_NOT_OWNING_THREAD_ERROR

*/

OBJC_EXPORT  int objc_sync_exit(id obj)

__OSX_AVAILABLE_STARTING(__MAC_10_3, __IPHONE_2_0);

// The wait/notify functions have never worked correctly and no longer exist.

OBJC_EXPORT  int objc_sync_wait(id obj, long long milliSecondsMaxWait)

UNAVAILABLE_ATTRIBUTE;

OBJC_EXPORT  int objc_sync_notify(id obj)

UNAVAILABLE_ATTRIBUTE;

OBJC_EXPORT  int objc_sync_notifyAll(id obj)

UNAVAILABLE_ATTRIBUTE;

集合类--------------

DEFINED AS: A common class

HEADER FILES: objc/List.h

DEPRECATED_ATTRIBUTE

@interface List : Object

{

@public

id *dataPtr  DEPRECATED_ATTRIBUTE; /* data of the List object */

unsigned numElements  DEPRECATED_ATTRIBUTE; /* Actual number of elements */

unsigned maxElements  DEPRECATED_ATTRIBUTE; /* Total allocated elements */

}

- (id)makeObjectsPerform:(SEL)aSelector  DEPRECATED_ATTRIBUTE;

- (id)makeObjectsPerform:(SEL)aSelector with:anObject  DEPRECATED_ATTRIBUTE;

/*************************************************************************

* Hash tables of arbitrary data

*************************************************************************/

/* This module allows hashing of arbitrary data.  Such data must be pointers or integers, and client is responsible for allocating/deallocating this data.  A deallocation call-back is provided.

The objective C class HashTable is preferred when dealing with (key, values) associations because it is easier to use in that situation.

As well-behaved scalable data structures, hash tables double in size when they start becoming full, thus guaranteeing both average constant time access and linear size. */

typedef struct {

uintptr_t (*hash)(const void *info, const void *data);

int (*isEqual)(const void *info, const void *data1, const void *data2);

void (*free)(const void *info, void *data);

int style; /* reserved for future expansion; currently 0 */

} NXHashTablePrototype;

NSObjCRuntime.h----------------

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedef long NSInteger;

typedef unsigned long NSUInteger;

#else

typedef int NSInteger;

typedef unsigned int NSUInteger;

#endif

objc-exception.h---------------

typedef struct {

int version;

void (*throw_exc)(id); // version 0

void (*try_enter)(void *); // version 0

void (*try_exit)(void *); // version 0

id (*extract)(void *); // version 0

int (*match)(Class, id); // version 0

} objc_exception_functions_t;

objc-load.h-----------------

OBJC_EXPORT long objc_loadModules (

char *modlist[],

void *errStream,

void (*class_callback) (Class, Category),

/*headerType*/ struct mach_header **hdr_addr,

char *debug_file

) OBJC2_UNAVAILABLE;

OBJC_EXPORT int objc_loadModule (

char * moduleName,

void (*class_callback) (Class, Category),

int * errorCode

) OBJC2_UNAVAILABLE;

OBJC_EXPORT long objc_unloadModules(

void *errorStream, /* input (optional) */

void (*unloadCallback)(Class, Category) /* input (optional) */

)

message.h---------------

/// Specifies the superclass of an instance.

struct objc_super {

/// Specifies an instance of a class.

__unsafe_unretained id receiver;

/// Specifies the particular superclass of the instance to message.

#if !defined(__cplusplus)  &&  !__OBJC2__

/* For compatibility with old objc-runtime.h header */

__unsafe_unretained Class class;

#else

__unsafe_unretained Class super_class;

#endif

/* super_class is the first class to search */

};

* These functions must be cast to an appropriate function pointer type

* before being called.

*/

#if !OBJC_OLD_DISPATCH_PROTOTYPES

OBJC_EXPORT void objc_msgSend(void /* id self, SEL op, ... */ )

__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

OBJC_EXPORT void objc_msgSendSuper(void /* struct objc_super *super, SEL op, ... */ )

__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

#else

oc语言基础整理的更多相关文章

  1. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  2. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  3. 黑马程序员——OC语言基础语法 面向对象的思想

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结)(一)基础语法 1)关键字 @interface.@implementati ...

  4. OC语言基础之代码的封装

    1.封装的注意点 1: // 成员变量尽量不要用@public 2: // @public 3: int age; 1: //@public 2: // 只读(readonly):只允许外界访问我的n ...

  5. OC语言基础之NSArray

    0.数组的分类 NSArray :不可变数组 NSMutableArray : 可变数组 1: // @[] 只创建不可变数组NSArray 2: /* 错误写法 3: NSMutableArray ...

  6. OC语言基础之NSString

    1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...

  7. OC语言基础之利用property优化封装

    1.property功能用法 1: // @property:可以自动生成某个成员变量的setter和getter声明 2: @property int age;//可以直接免去变量的声明 3: // ...

  8. OC语言基础之函数与方法

    方法 1.对象方法都是以减号 - 2.对象方法的声明必须写在@interface和@end之间    对象方法的实现必须写在@implementation和@end之间 3.对象方法只能由对象来调用 ...

  9. OC语言基础之NSDictionary

    1.NSDictionary字典的创建 1: // key value 2: // key -==> value 3: NSDictionary *dict = [NSDictionary di ...

随机推荐

  1. Python 爬虫笔记

    urllib python3 与 python2 的urllib很不一样,之前urllib2的方法基本上都变成了python3里的urllib.request模块中 import urllib.req ...

  2. SQL——模糊查询

    前言 在这个大数据时代,我们都离不开对数据的增删改查,增加.删除.修改这些看似都是一步完成的事情,但是对于查询来说,好的查询SQL可以大大的减少系统内存运行时间,提高系统的反应速度.这里简单的介绍一下 ...

  3. 2017-10-12 NOIP模拟赛

      斐波那契 /* 相同颜色的节点与父亲节点的差相等,且是一个小于它的最大斐波那契数 所以降两个点同时减去小与它的最大斐波那契数,直到两点相等 */ #include<cstdio> ; ...

  4. 历年NOIP真题总结

    前言:最近把历年的NOIP真题肝了一遍(还有3个紫题先咕掉了),主要是到1998年的提高组的题.把题目的做题简要思路搁在这儿,一个是为了考前翻一翻,想想自己的哪些思路要梳理的什么什么的,反正怎么说呢, ...

  5. Scanner类、Random类、ArrayList类

    先写个框架,复习内容后来添加... 先写个框架,复习内容后来添加... 先写个框架,复习内容后来添加... 先写个框架,复习内容后来添加... 先写个框架,复习内容后来添加... 先写个框架,复习内容 ...

  6. 物理机和虚拟机互相可以ping通,还是无法连接

    关闭防火墙服务 CentOS # systemctl stop firewalld.service Debian # iptables -F Ubuntu # ufw disable 安装SSH服务 ...

  7. Ubuntu搜狗输入法乱码情况

    cd ~/.config sudo rm -rf SogouPY* sogou*

  8. (转)深入浅出linux系统umask值及其对应的文件权限讲解

    浅出linux系统umask值及其对应的文件权限讲解 原文:http://blog.51cto.com/oldboy/1060032 缘起:1.此文的撰写特别为感谢51cto的博客工作人员和领导,老男 ...

  9. Hystrix核心基础 - 滑动窗口创建过程及demo

    前言 RxJava可能有些小伙伴没有听过是什么东西,可能是因为大家平时在做业务需求的时候对异步编程了解得比较少,而RxJava就是这么一个响应式编程框架,RxJava在安卓上面用得非常多,做安卓的朋友 ...

  10. Java 内存模型(零)

    经典老图: 方法区和堆:由所有线程共享的数据区 虚拟机栈和本地方法栈和程序计数器:线程隔离的数据区 后面一步步讲这个图里面所涉及到的内容,待续...