1.字符串在block中得赋值

  • 定义一个全局变量,《字符串》当这个字符串用copy修饰的时候,然后再在block中赋值,当在block块之外访问时,不能得到字符创的值。此时字符串应该设置为strong。

  • 在block中修改局部变量的值 此变量需要用__block修饰

1.字符串在block中得赋值

  • 定义一个全局变量,《字符串》当这个字符串用copy修饰的时候,然后再在block中赋值,当在block块之外访问时,不能得到字符串的值,此时的字符串可能已经被释放,解决办法字符串应该用strong修饰。
@interface ()
/** 字符串 */
@property (strong, nonatomic) NSString *string;
@end void (^test)(void) = ^ {
self.string = @"string";
};
NSLog(@"%@",self.string);
  • 在block中修改局部变量的值 此变量需要用__block修饰
    __block NSString *str = nil;
void (^test)(void) = ^ {
str = @"string";
};
NSLog(@"%@",str);

2.xib--当一个视图是通过xib创建时,且使用自动布局--autolayout,那么当把xib,添加到其他视图中得时候,会得到意想不到的结果。

  • 解决办法:取消autoresizingMask

且通过xib创建的视图,self.view.bounds 不是屏幕那个尺寸

- (void)awakeFromNib
{
self.autoresizingMask = UIViewAutoresizingNone;
}
  • 当控制器的view是通过xib或者stroyBoard加载的时候,那么把scrollView加到控制器的view上时,尺寸设置self.view.bounds;会被拉伸,若不被拉伸用以下语句
    scrollView.frame = self.view.bounds;
scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

3.集成通讯录UI,然后跳转到发短信界面

  • Remote compose controller timed out (NO)! On Opening MFMessageComposer

  • Meaning of Warning “while a presentation is in progress!”

  • 在带有UI的通讯录上然后选择联系人,让他跳转到发短信界面,不合理跳转会爆以上那两个警告。而且不会跳转到发短信界面

// 代理方法
#pragma mark - <ABPeoplePickerNavigationControllerDelegate>
/**
* 当选择某一个联系人的时候就会执行该方法
*
* @param person 每一个联系人就是一条记录
*/
- (void)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker didSelectPerson:(ABRecordRef)person
{ // 1.获取对应联系人的电话号码
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex phoneCount = ABMultiValueGetCount(phones);
NSString *phoneValue;
for (CFIndex i = 0; i < phoneCount; i++) {
phoneValue = (__bridge NSString *)ABMultiValueCopyValueAtIndex(phones, i);
} // 2.发短信
dispatch_async(dispatch_get_main_queue(), ^{
// 3.发短息
// 3.1.显示发短息的控制器
MFMessageComposeViewController *messageComposeVC = [[MFMessageComposeViewController alloc] init];
// 3.2.设置内容
messageComposeVC.body = self.msgString; // 3.3.设置代理
messageComposeVC.messageComposeDelegate = self; // 3.4.设置收件人
messageComposeVC.recipients = @[phoneValue]; // 3.5.显示控制器
[self presentViewController:messageComposeVC animated:NO completion:nil]; }); // 3.释放应该释放对象
CFRelease(phones);
#warning 是否有内存泄露
CFRelease((__bridge CFTypeRef)(phoneValue));
}
  • 首先这个通讯录VC是从self --modal出的控制器。当调用这个代理方法之后,通讯录VC就会销毁。,所以应该开个子线程在modal出发短信的控制器。

还待补充。。。。

最新文章

  1. UWP开发之Mvvmlight实践四:{x:bind}和{Binding}区别详解
  2. C# 序列化反序列化
  3. 解决:Android编译源码根目录下/system/vold后,通过push命令将编译生成的vold文件push至system/bin下无法正常开机
  4. matlab 学习
  5. BZOJ 4236: JOIOJI MAP
  6. 用Gitosis搭建Git服务器(经典资料)
  7. Invert Binary Tree——LeetCode
  8. DOM事件相关内容
  9. Eloquent ORM 之关联查询
  10. Spring Boot 系列(四)静态资源处理
  11. zabbix_sender用法实例
  12. 轨迹系列4——WebGIS中使用ZRender实现轨迹前端动态播放特效
  13. Python的日期函数datetime使用
  14. 【Python】定时调度
  15. Python中各种括号的区别、用途及使用方法
  16. 11招教你做好 ERP 系统维护
  17. luogu P1141 01迷宫
  18. Java并发编程(九)线程间协作(下)
  19. sed替换
  20. quartz 核心概念

热门文章

  1. 杭电 1150 moving tables
  2. 2016/05/10 thinkphp 3.2.2 ①系统常量信息 ②跨控制器调用 ③连接数据库配置及Model数据模型层 ④数据查询
  3. Building Microservices: Using an API Gateway
  4. Chart.js docs
  5. vs2010 创建和发布 webservice
  6. UESTC 982质因子分解
  7. linux 下RTL8723/RTL8188调试记录(命令行)【转】
  8. Buildroot构建指南--快速上手与实用技巧【转】
  9. wirte function in powershell
  10. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)