在xcode 开发过程中,经常遇到如下错误:
"_OBJC_CLASS_$_ClassName", referenced from:
我总结了两种错误情况:
1.一个类所在的库(框架)没有被引入,常见为framework添加。
解决方法:添加该类所在的库(框架)
2.一个类没有被正确的添加到工程中,这种情况在工程中的确存在这个类,可是程序就是不能识别。
解决方法:选中该类,只删除它在该工程中的引用,然后,再添加引用,如下图
添加:
选择
可以说我是一个网络方面的菜鸟!
现在做的项目网络部分是别个写的(已经离职)
今天突然发现个问题,我在他代码的catch里面加入了一些提示信息(android 平台,弹个toast之类的)
发现肯定会走到异常的代码死都走不到异常里面去。
我就郁闷了,在代码里面打印了各种log 11111111 2222222222 333333333 苦逼懒得写那么清楚了。
HttpURLConnection conn; conn = (HttpURLConnection)url.openConnection(); conn.setConnectTimeout(3*1000);//注意之前没有这个 System.out.println("555555"); MyAuthenticator authenticator = new MyAuthenticator(TcpProcessAcceptedData.name, TcpProcessAcceptedData.password); Authenticator.setDefault(authenticator); System.out.println("6666666"); InputStream fis=conn.getInputStream(); System.out.println("77777777");
尼玛怎么都走不到777777777 也走不到catch (这段代码全部在try的范围内,而且catch用的是所有异常的父类Exception)
没办法 苦逼啊,问题总得解决,加了 finally ,但是尼玛依然走不到finally 。
各位说郁闷不郁闷
后来我一行一行的看,我看标准文档,发现
conn.getInputStream()//这货很可能返回不了,因为默认这个java类里面默认的超时是infinite ,各位知道这个单词是什么意思吗?竟然是他妈的无限,如果你传入的是一个永远都不可能连上的ip地址,它就返回不了了 啊啊啊啊 !!!
目前有个需求,需要把.xib封装到静态库中,试了很多种方法都不行,最后看到这篇文章 ,它是从 iOS Library With Resources 翻译过来的,图片没有显示(原文有)。
资源必须是单独编译成Bundle才能使用,所以需要为MyLibrary(静态库target)项目生成另一个Bundle Target
选择MyLibrary(静态库target)项目,在右边面板中点Add Target->MAC OS X->FRAMEWORK &LIBRARY->Bundle
需要说明,bundle项目只有MAC OS X里才有,但实际上也是可以用于IOS的,只是需要做些改动,即下面的第2步.
把bundle target修改成ios能用的,看图
Build Settings设置
1)Architectures为Standard (armv7)
2)Build Active Architecture Only 为指定的IOS版本
设置XIB为输出到BUNDLE,这一步相当于VS c#开发里把某个图片设置编译动作为嵌入资源.
选择Mylibrary(静态库target)项目,targets选择MyLibraryResources(静态库资源target),Build Phases面板
Copy Bundle Resources点+选择xib文件
把主程序和静态库做关联,这样省得每次要手动添加静态库的.a文件
要说明下:我原本以为编译主程序会自动编译静态库,实际上做的并没有那么好,我改动了静态库的XIB内容,但编译主程序后发现内容还是上次的,所以我每次都是clean build.
编辑Scheme(菜单Product->Edit Scheme)
选择Build
点+,选择MyLibrary(静态库target)和MylibraryResources(静态库资源target)项目
这样的话,每次build都可以编译多个target和scheme。
选择MyLibraryResource(静态库资源target)项目在Build Settings面板里
设置User Header Search Paths为$(BUILT_PRODUCTS_DIR),注意建议把Recursive勾上(递归搜索)
- (id)init
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundlemainBundle] URLForResource:ResourcesBundlewithExtension:@"bundle"]];
if ((self = [super initWithNibName:[NSStringstringWithUTF8String:object_getClassName(self)] bundle:bundle]))
{
//code
}
return self;
}
关于xib中的图片