capturing self strongly in this block is likely to lead to a retain cycle
BSXPCMessage received error for message: Connection interrupted
-[__NSCFNumber length]: unrecognized selector sent to instance 0x8b3c310
将模型属性中的comments改为NSNumber类型,掉用的时候做一下数据转换
设置属性类型为NSNumber
调用时做下数据类型转换,转成NSString即可
解析pilst文件中的字段的 comments数据类型为NSNumber类型,而在字典转模型时写成了NSString类型,所以报了以上错误
-[NSCFType buttonClicked:]: unrecognized selector sent to instance 0x44e1e0′
这时候对于初学者来说这是莫名其妙,反复检查都是没有问题,但是就是会crash。
解决方法如下:
问题的原因就是声明MainView controller的时候出现问题。把MainView声明成立局部变量,
导致MainView中的action不能正确识别本身的ViewController
改正很简单:
MainView 定义在Application的.h文件中就可以了。
当然还有有很多其它情况出现类似的错误,原因基本都是由于viewController继承错误的导致的。
popViewControllerAnimated后,进入的viewcontroller不能即时刷新。
这时它不执行viewDidLoad,但执行viewWillAppear:(BOOL),所以只要把刷新逻辑写到viewWillAppear:(BOOL)里就OK了。
但要注意当有刷新label这样的view里,它的backgroundColor最好不要是clearColor,否则label上的字会出现重影。
Capturing ‘self’ strongly in this block is likely to lead to a retain cycle
_player.completionBlock = ^{
[self stopPlay];
};
上面在block里用self是会有提示:
Capturing ‘self’ strongly in this block is likely to lead to a retain cycle
可以这样改一下
__weak typeof(self) weakSelf = self;
_player.completionBlock = ^{
[weakSelf stopPlay];
};
-fno-objc-arc -Wl -no_pie
去掉CFLAGS中的-mdynamic-no-pic后重新编译工程即可将警告去除:
targets–>build Settings–>Linking–>Don’t create Position Independent Executables 设置为YES【默认为No】警告自然消除
你把self转换一下加上block字段之后就不会被retain了
__block ViewController *controller = self;
[_tableView setPullToRefreshHandler:^{
[controller dataDidRefresh:nil];
}];
在ARC下不用__block 而是用 __weak 为了避免出现循环引用
block里面不能使用自己自定义的属性,因为block是独立的