美文网首页iOS之开发配置
201705关于平时开发过程中遇到的一些小知识小问题

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

作者: 乾坤醉心尘 | 来源:发表于2017-05-23 16:26 被阅读47次

一,关于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里面没有添加相应的系统依赖库,所以,添加上去就解决这种问题啦。

相关文章

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/bhfgxxtx.html