有些东西虽然不重要,但是零零碎碎会用到,就做个笔录吧:

协议中有2个关键字可以控制方法是否要实现(默认是@required),在大多数情况下,
用途在于程序员之间的交流
@required:这个方法必须要实现(若不实现,编译器会发出警告)
 
@required
- (void)test;
- (void)test2;
@optional:这个方法不一定要实现

@optional

- (void)test3;

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

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

最新文章

  1. 树莓派debian配置lamp【解决apache不显示php】
  2. Fragment要点复习
  3. Web 前端
  4. JAVA基础知识之JVM-——反射和泛型
  5. Android 子activity关闭 向父activity传值
  6. vc6静态库的生成和调用
  7. CSS中常用中文字体转Unicode编码表
  8. (转)反射发送实战(-)InvokeMember
  9. Oracle 更改用户名
  10. struts2官方演示程序总结struts2-blank
  11. VXLAN, 一种叠加在L3网络上的L2网络
  12. LINQ学习之旅 C#3.0新特性(一)
  13. RichEdit文字背景色的处理
  14. 解决linux更新apt软件源时报出GPG错误
  15. 深入浅出MongoDB应用实战开发
  16. 点分治&&动态点分治学习笔记
  17. nginx Beginner’s Guide
  18. APUE学习笔记——8.1-8.4 进程基础
  19. Android SurfaceFlinger
  20. 使用VisualSVN建立SVN服务器

热门文章

  1. mongodb 配置单实例与双实例
  2. webstorm vscode 常用设置
  3. 计算机网络 --万维网www
  4. EasyPlayerPro(Windows)流媒体播放器开发之接口设计
  5. 【题解】 CF11D A Simple Task
  6. Java基础教程:多线程基础(3)——阻塞队列
  7. javascript控制样式表(不常用)
  8. STM32 FSMC学习笔记+补充(LCD的FSMC配置)
  9. hadoop 安装配置
  10. Winfrom和控制台中static修饰方法的问题