Objective-C NSObject与运行时系统
创建: 2018/01/26
完成: 2018/02/02
遗留: TODO
NSObject | |||||||||||||||||||||
运行时系统 |
程序运行时候起作用的系统? NSObject是运行时系统的接口(API) |
||||||||||||||||||||
属性 |
只有一个isa,决定实例与类的关系,不可以自己变更 @interface NSObject <NSObject> { Class isa OBJC_ISA_AVAILABILITY; } 可以获取当前实例变量所属的类 |
||||||||||||||||||||
类与实例 |
|
||||||||||||||||||||
实例的生成与释放 |
|
||||||||||||||||||||
初始化 |
|
||||||||||||||||||||
对象的比较 |
|
||||||||||||||||||||
描述类 |
|
||||||||||||||||||||
信息传递机制(其他语言的函数) | |||||||||||||||||||||
SEL类型 |
信息选择器(方法名)也是一种数据类型, SEL 无效的SEL表现为, NULL或者(SEL)0 |
||||||||||||||||||||
用SEL呼出信息 |
|
||||||||||||||||||||
信息探索途径 判断是否可以回应信息 |
收到信息后吗,先找自身,没有再往上找,到NSObject还没有就会报错
@interface S8_A : NSObject { } - (int)getOne; + (int)getTwo; @end @implementation S8_A - (int)getOne { return 1; } + (int)getTwo { return 2; } @end printf("-能不能回应getONE: %s\n", [temp respondsToSelector:@selector(getOne)] ? "OK":"NO"); printf("+instance能不能回应getONE: %s\n", [S8_A instanceMethodForSelector:@selector(getOne)] ? "OK":"NO"); printf("-能不能回应getTwo: %s\n", [temp respondsToSelector:@selector(getTwo)] ? "OK":"NO"); printf("+instance能不能回应getTwo: %s\n", [S8_A instanceMethodForSelector:@selector(getTwo)] ? "OK":"NO"); /* ----------------------------------------- S8 ----------------------------------------- -能不能回应getONE: OK +instance能不能回应getONE: OK -能不能回应getTwo: NO +instance能不能回应getTwo: OK */
|
||||||||||||||||||||
获取函数指针 |
尽量不用 # TODO: Supply [p187] |
||||||||||||||||||||
对self的代入 | 改变了受体,所以除了init外不用 | ||||||||||||||||||||
target action 目标-动作模式 |
action method application框架(Mac OS) - (void)XXXXX:(id)sender; UIKit(iOS) - (void)XXXXX; - (void)XXXXX:(id)sender; - (void)XXXXX:(id)sender forEvent:(UIEvent *)event; |
||||||||||||||||||||
Xcode里事件方法和 控件的写法 |
事件:
- (IBAction) XXXXX:(id)sender; // IBAction是macro, 表示void outlet: 参照GUI的可读写声明属性叫做outlet IBOutlet NSbutton *theButton; // IBOutlet也是macro,实际为空白 //同时声明多个 IBOutletCollection(NSButton) NSArray *buttons;// IBOutletCollection(NSButton)编译后也是空白 //声明属性 @property(weak) IBOutlet NSButton *okButton;//都有weak
|
||||||||||||||||||||
# TODO: Supply [p198~207] |
|||||||||||||||||||||
Objective-C与Cocoa环境 | |||||||||||||||||||||
新的运行时系统 | |||||||||||||||||||||