ios- -[__NSCFType invalidate]: unrecognized selector sent to instance 0x18894a30错误随笔

问题:app点支付按钮,跳到支付宝web页面,程序进入后台,程序卡死,支付完成或取消支付时,程序crash。

报错:-[__NSCFType invalidate]: unrecognized selector sent to instance 0x18894a30,错误原因是对已经销毁的对象,发送了消息,程序访问不到对象。

我集成了保利视频,发生错误的代码

 - (void)initPloyVideo

{

    PolyvSettings *polyvSettings = [[PolyvSettings alloc] init];

    [polyvSettings initVideoSettings:@"ylzOkbgQcn" Readtoken:@"AAiK2jiX0t-BAnX4n6CrX-xV0TfqPUML" Writetoken:@"ZDYlp4fGF8g100D-TYug02Z14idkcelP" UserId:@"00018093b1"];

}

这样的话,polyvSettings是局部变量,出了initPloyViedeo方法,polyvSettings为nil。再次进入程序时,向polyvSettings发消息,就是向已经释放了得内存发消息,程序crash。

改错之后的代码:

//先加一个成员变量,再AppDelegate里加成员变量,相当于整个工程的全局变量,程序销毁,polyvSettings才为nil,程序不销毁,polyvSettings不为nil;

@interface AppDelegate : UIResponder <MiPushSDKDelegate,UIApplicationDelegate>

{

    PolyvSettings *polyvSettings;

}

- (void)initPloyVideo

{

    polyvSettings = [[PolyvSettings alloc] init];

    [polyvSettings initVideoSettings:@"ylzOkbgQcn" Readtoken:@"AAiK2jiX0t-BAnX4n6CrX-xV0TfqPUML" Writetoken:@"ZDYlp4fGF8g100D-TYug02Z14idkcelP" UserId:@"00018093b1"];

}

这样的话,程序从后台回来,还可以对polyvSettings发送消息,执行方法,程序完美运行。

原文地址:https://www.cnblogs.com/rankilau/p/4580744.html