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,不知道大家有没有试过,编译的时候,特别是手动拖拽了第三方的东西的时候,一编译就出现这种情况


201705关于平时开发过程中遇到的一些小知识小问题_第1张图片


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

201705关于平时开发过程中遇到的一些小知识小问题_第2张图片

你可能感兴趣的:(201705关于平时开发过程中遇到的一些小知识小问题)