"世界上到底是先有鸡后有蛋,还是先有蛋后有鸡?"这是一个古老的哲学命题。
几千年来,许多哲人都曾试图解答这个问题,然而又都找不出令人信服的论据,所以直至今天,这个问题仍然没有定论。 
--在编程的世界里,也是有着这么一个传说:两个类相互引用,那到底是先引用哪个类呢?

刚刚在编码的时候就遇到了这么一个奇特的问题,互相引用的两个类,代码似乎写得没什么问题,但一旦编译就出错了…这点,在最终解决了Error及Waring之后还是解答不了。
情景还原:由于业务需求,需要用到两个视图的相互跳转,因此需要分别对两个类进行引用,所以做如下编码。
AccountViewController.h文件源码
#import <UIKit/UIKit.h>
#import "AccRegViewController.h"@interface AccountViewController : UIViewController
-(IBAction) btnLoginClick:(id)sender;
-(IBAction) btnWClick:(id)sender;
@property (nonatomic,retain) IBOutlet UITextField *txtName;
@property (nonatomic,retain) IBOutlet UITextField *txtPwd;
-(void) doReg;
@property (nonatomic,retain) AccRegViewController *regView;
@end
AccRegViewController.h文件源码
#import <UIKit/UIKit.h>
#import "AccountViewController.h"@interface AccRegViewController : UIViewController
@property (retain ,nonatomic) AccountViewController *loView;
-(void) doLogin;@end

这样写似乎没什么错误,但一旦编译,机智的编译器就会这么说:

这没错啊!!!肿么会酱紫?
于是…把import分别改成了class试试…
@class AccRegViewController;
@class AccountViewController;

好啦,这样应该没问题了把!

但这次机制的XCODE把ERROR去掉了,给俺来了几个WORING!……
这不合适吧,少年,编码容易嘛,别动不动就error woring的,真是受不鸟啊~
------------------解决方案-------------------
最终的解决方案是:
在各子的实现文件即.m中对两者的头文件都进行引用
#import "AccRegViewController.h"
#import "AccountViewController.h"

这样的话就把两者都相互引用了,nice啊,这个代码在我个人看来太有意思了。

直到现在,我还是不清楚哪个类先引用了另一个类,但能肯定一点的是BUG解决了。

IOS开发笔记 - 先有鸡,还是先有蛋?相互引用的奇遇!相关推荐

  1. 移动项目开发笔记(管理不同解决方案下的DLL文件相互引用之心得体会)

    当项目比较庞大时候Dll文件的管理显得就尤其重要了,比如多个解决方案有不同项目之间的引用,如果引用的路径都指向某项目bin下的dll文件的话,dll维护起来很不方面,因此遇到这种情况的话该怎么更好的管 ...

  2. iOS开发笔记-两种单例模式的写法

    iOS开发笔记-两种单例模式的写法 单例模式是开发中最常用的写法之一,iOS的单例模式有两种官方写法,如下: 不使用GCD #import "ServiceManager.h"st ...

  3. IOS开发笔记之推广安装(用网页判断是否安装App)

    IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...

  4. IOS开发笔记2-C语言基础复习

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53439812 本文出自:[顾林海的博客] 前言 在正式进入ios开发前 ...

  5. IOS开发笔记1-写一个hello world!程序

    转载请标明出处: http://blog.csdn.net/hai_qing_xu_kong/article/details/53227222 本文出自:[顾林海的博客] 序言 从今天开始正式踏上io ...

  6. IOS开发笔记之常用的第三方库(太多了。)

    图像: 1.图片浏览控件MWPhotoBrowser  实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存.可对图片进行缩放等操作. ...

  7. iOS开发笔记 -- 推送证书的创建及合并

    iOS开发推送功能 在这里整理一下推送的步骤希望对大家有所帮助 推送证书,有效期限制一般为一年.当我们证书过期的时候,就需要重新生成证书了 . 我从头开始,也就是,你的开发者账号是空空的,什么都没有开 ...

  8. iOS开发笔记(二):block循环引用

    写这篇文章的缘由是第一次面试时被问到了block循环引用的问题,当时回答的不是很好,首先要明确的是,block是否用copy修饰决定不了循环引用的产生,在此再一次进行补强,有不对的地方还请多多指教. ...

  9. iOS开发笔记 - 界面调试神器Reveal

    http://blog.csdn.net/jackfrued/article/details/50934092 Reveal是iOS开发工具中的神器之一,它能够在应用程序运行过程中调试应用程序界面. ...

最新文章

  1. 多屏互动电脑版_MAXHUB无线双频同屏器HDMI连接投影仪手机电视机笔记本电脑投屏器多屏互动 MAXHUB传屏盒子WB01标配2个无线传屏...
  2. linux下tty,控制台,虚拟终端,串口,console(控制台终端)详解
  3. good things will come late
  4. scala简明教程:偏函数、高阶函数、Future异步编程、隐式转换
  5. linux的lnmp环境,Ubuntu 16.04 LTS下LNMP环境配置简述
  6. 埃氏筛法的一般写法(区间筛法)
  7. 1282:最大子矩阵《信息学奥赛一本通》
  8. Git教程(二)-如何上传和同步自己的git项目
  9. 择师论(怎么有效的向别人学习)
  10. 华军java_Java SE Runtime Environment 8
  11. Testing a React+Redux web application
  12. kali linux下sqlmap使用教程
  13. 用Python做的整蛊小程序——整点阴间的东西
  14. 2020年CSP-J2 CSP-S2 复赛题解
  15. 什么是 知足者常乐?
  16. 发完牢骚和惆怅,就继续去看paper吧
  17. 数学基础知识-排列与组合
  18. 判别一个分解的无损连接性
  19. BiLSTM+CRF实现AI诗人与长短记忆网络
  20. some words from website

热门文章

  1. 华为机试HJ93:数组分组
  2. android 动态添加listview,动态向listView Android添加元素
  3. linux 指定范围内查找文件,Linux Find命令查找指定时间范围内的文件的例子
  4. maxcompute操作_MaxCompute问答整理之9月
  5. python中实例和对象的区别_通过Python中对象实例的属性比较对象实例是否相等
  6. 学生用计算机记录表,计算机教室学生上机记录表第14周
  7. 爬虫入门-京东评论爬取和简单分析[学习笔记]
  8. 21天Jmeter打卡Day20 响应断言,JSON断言
  9. 软件测试:我该坚持在一个人的岗位还是辞职?
  10. java数组变量_关于java 的数组引用变量