2)Objective-C中的方法默认被隐藏了两个参数:self和_cmd。self指向对象本身,_cmd指向方法本身。举两个例子来说明:

  这里v@:@是什么东西呢?实际上,这里的第一个字符v代表函数的返回类型是void,后面三个字符参考上面2)中的解释就可以知道,分别是self, _cmd, name这三个参数的类型id, SEL, NSString。

  4)在ViewController.m中有一句代码是 NSLog(@%@,book.name);,程序运行到这里时,会去Book.m中寻找name这个取值方法 。但是Book.m里并没有这个取值方法,于是程序进入methodSignatureForSelector:中进行消息转发。执行完之后,以@@:作为方法签名类型返回。这里第一字符@代表函数返回类型NSString,第二个字符@代表self的类型id,第三个字符:代表_cmd的类型SEL。

  接着程序进入forwardInvocation方法。得到的key为方法名称name。最后根据这个key从字典里获取相应的值,这样就完成了整个getter过程。

  @synthesize的语义是如果你没有手动实现setter方法和getter方法,那么编译器会自动为你加上这两个方法。

  @dynamic告诉编译器,属性的setter与getter方法由用户自己实现,不自动生成。(当然对于readonly的属性只需提供getter即可)。假如一个属性被声明为@dynamic var,然后你没有提供@setter方法和@getter方法,编译的时候没问题,但是当程序运行到instance.var =someVar,由于缺setter方法会导致程序崩溃;或者当运行到 someVar = var时,由于缺getter方法同样会导致崩溃。编译时没问题,运行时才执行相应的方法,这就是所谓的动态绑定。

  @dynamic最常用的使用是在NSManagedObject中,此时不需要显示编程setter和getter方法。原因是:@dynamic告诉编译器不做处理,使编译通过,其getter和setter方法会在运行时动态创建,由Core Data框架为此类属性生成存取方法。

  1.什么情况使用 weak 关键字,相比 assign 有什么不同? 什么情况使用 weak 关键字? 在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性 自身已经对它进行一次强引用,没有必要再强引用一...

  转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一. Runtime简介Runtime 又叫运行时,是一套底层的 C 语言 API,是 iOS 系统的核心之一。开发者在编码过程中,可以给任意一个对象发送消息,在编...

  1.当事人收到治安处罚后,人民警察不可以当场收缴罚款的情形是( )。1.【答案】D。解析:《治安管理处罚法》第104条:受到罚款处罚的当事人应当自收到处罚决定书之日起十五日内,到指定的银行缴纳罚款。但是,有下列情形之一的,人民警察可以当场收缴罚款:(一)被处五十元以下罚款,...

  昨天下了一上午的雨,不知是不是梅雨 (梅雨:江南梅子成熟时出现的阴雨天气) 下午雨停了,爸拿着鱼竿去钓鱼,全身淋湿 今天天晴了,蝴蝶飞舞,院子瓜果香 我在想:会不会发生蝴蝶效应? (一只蝴蝶的颤动引起亚洲的台风) 许多大家喜欢在晚年时,倒腾点反思的东西 忏悔录、回忆录、文集...

  Spring Aop Aop面向切面编程 Aop入门动态代理 动态代理,其实与Aop的原理有些相似,可以用动态代理来入门。 什么是动态代理 为什么使用动态代理 动态代理Demo Aop好处 每个事物逻辑位于一个位置,代码不分散,便于维护和升级。 业务模块更加简洁,只包含核心...

  其实我也很享受在工作上忙碌的状态,因为很少忙碌,又觉得只有忙碌的状态才是能被社会大众所认可的,这样我才会有成就感。所以偶尔忙碌的工作状态让我觉得自己有社会存在感和价值感,但真的很少思考过忙碌背后的是否存在价值或存在多少价值。 记得第一次看到“忙碌”和“充实”是...