201705关于平时开发过程中遇到的一些小知识小问题

一,关于NSClassFormString:

NSClassFromString是一个很有用的东西,尤其在进行iPhone toolchain的开发上。

正常来说,

id myObj = [[NSClassFromString(@"MySpecialClass") alloc] init];

id myObj = [[MySpecialClass alloc] init];

是一样的。但是,如果你的程序中并不存在MySpecialClass这个类,下面的写法会出错,而上面的写法只是返回一个空对象而已。

因此,在某些情况下,可以使用NSClassFromString来进行你不确定的类的初始化。

比如在iPhone中,NSTask可能就会出现这种情况,所以在你需要使用NSTask时,最好使用:

[[NSClassFromString(@"NSTask") .....]]

而不要直接使用[NSTask ...]这种写法。

NSClassFromString的好处是:

1 弱化连接,因此并不会把没有的Framework也link到程序中。

2 不需要使用import,因为类是动态加载的,只要存在就可以加载。因此如果你的toolchain中没有某个类的头文件定义,而你确信这个类是可以用的,那么也可以用这种方法。


例如:Classclass =NSClassFromString(className);//NSClassFromString在某些特殊的情况下,可以进行一些你不确定的类,的定义。

if(class) {

UIViewController*ctrl = class.new;

ctrl.title=_titles[indexPath.row];

[self.navigationControllerpushViewController:ctrlanimated:YES];



二、关于(lldb) po text

error: Couldn't materialize: couldn't get the value of variable text: variable not available

error: errored out in DoExecute, couldn't PrepareToExecuteJITExpression

解决方案

其实这是由于你工程编译策略的问题,需要将 release 下的变异策略修改:

Project > App target > Build Settings > Optimization Level > Release 将选项 fastest,Smallest[-Os]改为 None .

在 debug 下不会发生此错误,是因为 debug 下的变异策略默认为 None



三、关于编译错误:Apple Mach-O Linker Error,不知道大家有没有试过,编译的时候,特别是手动拖拽了第三方的东西的时候,一编译就出现这种情况



这种错误,很奇怪,就是你点击的话,对应的错误位置不会给你点出来。那么,这种情况就应该是Link Binary With Libraries里面没有添加相应的系统依赖库,所以,添加上去就解决这种问题啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1,警告:“xoxoxoxo” is deprecated解决办法:查看xoxoxoxo的这个方法的文档,替换掉这...
    layjoy阅读 10,080评论 0 3
  • 错误:1000 SQLSTATE: HY000 (ER_HASHCHK)消息:hashchk 错误:1001 SQ...
    灼灼2015阅读 23,897评论 0 6
  • 【处女座喜欢你的表现】 1。欺负你 2。欺负你 3。欺负你 4。欺负你 5。欺负你 6。欺负你 7。欺负你 8。欺...
    我是大富翁616阅读 1,355评论 0 0
  • 今天是我们的节日,似乎应该写点什么。 做教师十九年了。十九年的教师节似乎都一样一一表彰大会一结束,教师...
    玫兰妮阅读 3,505评论 0 1
  • 公式:注意力>时间>金钱 从前边的内容,我们很容易推出这样的公式。那么今天我们要表达的就是: 能花钱买来的时间都是...
    吾空空阅读 1,594评论 0 0

友情链接更多精彩内容