Object-C 杂乱笔记
开发环境
自己写Demo的话,在[MAC OS X]-->[Application]-->[Command Line Tool](命令行模板 ) 设置文件名称的时候 Type选择Foundation系统库即可
NSLog 输出格式
• %@ 对象
• %d, %i 整数
• %u 无符整形
• %f 浮点/双字
• %x, %X 二进制整数
• %o 八进制整数
• %zu size_t
• %p 指针
• %e 浮点/双字 (科学计算)
• %g 浮点/双字
• %s C 字符串
• %.*s Pascal字符串
• %c 字符 竟然只能输出一个,若是多个的时候,选择最后一个char做为输出
• %C unichar
• %lld 64位长整数(long long)
• %llu 无符64位长整数
• %Lf 64位双字
Note: 多个变量输出的时候竟然需要写多个%i,%d之类的(个人现在认知)
1 2 3 | int r = 5; int p = 3; NSLog (@ "the number is %i %i" ,p,r); |
键值编码
定义: 一个用于间接访问对象属性的机制 (跟java中的反射貌似很像)
1 这个机制不需要调用存取方法和变量实例就可以访问对象属性
2 默认的实现方法由NSObject(祖先),NSKeyValueCoding(一个非正式协议的类目录)中被声明
3 支持带有对象值的属性,纯数值类型,结构,非对象参数和返回类型会被识别并自动封装/解封
使用:-valueForKey: 和 -setValue: forKey: 这两个方法(两个方法都看不明白的,看看方法的定义)
1 以字符串的形式向对象发送消息
2 不存在setter,getter方法时,将在内部查找名为_key(一种属性命名的方式,高级注释有木有,一眼看穿有木有)或key的实例变量,可获取到不存在getter方法的对象值,无需通过对象指针直接访问(我感觉很NB)
3 -setValue: forKey:设置对象的值或者valueForKey来获取对象的值,若对象的实例变量为基本类型(char,int,float,Bool.....)时,我们需要对数据进行封装(比如IsNumber)
这里是一个访问私有变量代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | //这里Book类仅仅是定义一个私有的属性 //----------------------------------------------- #import "Book.h" @implementation Book: NSObject { @private NSString *_name; } @end //这是main.m程序 //这里故意把forkey中的参数写为name,也能实现,可以看到一种访问机制 //--------------------------------------------------- #import <Foundation/Foundation.h> #import "Book.h" int main( int argc, const char * argv[]) { @autoreleasepool { Book *book = [[Book alloc]init]; [book setValue:@ "nbbbbb" forKey:@ "name" ]; NSString *name = [book valueForKey:@ "name" ]; NSLog (@ "%@" ,name); } return 0; } |
Enum
枚举值为整形(int)
不参加内存的占用和释放(这句话的含义自己理解)
枚举定义变量即可直接使用,不用初始化
typedef enum { enumone = 0. enumtwo = 1//int类型 }enumnamedefine;//枚举的定义
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步