标签:style class blog java color com
自己写Demo的话,在[MAC OS X]-->[Application]-->[Command Line Tool](命令行模板 ) 设置文件名称的时候 Type选择Foundation系统库即可
• %@ 对象
• %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之类的(个人现在认知)
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)
这里是一个访问私有变量代码
//这里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; }
标签:style class blog java color com
原文地址:http://www.cnblogs.com/nauy/p/3806418.html