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出发短信的控制器。

还待补充。。。。

iOS---小经验分享的更多相关文章

  1. [转]如何通过 App Store 审核(iOS 开发者经验分享)

    CocoaChina交流社区曾经发起一个主题讨论,关于iOS开发者遇到审核失败的原因及解决办法的,有价值的回复内容如下: wubo9935 App中设计的图标与Apple原生图标类似,Apple原生图 ...

  2. 博客后台迁移至i.cnblogs.com及小经验分享

    大家好!我们已经将博客后台从原来的 www.cnblogs.com/博客地址名/admin/ 迁移至独立的二级域名 i.cnblogs.com.如果您发现任何问题,麻烦您立即向我们反馈. 虽然这次迁移 ...

  3. iOS 小经验:UIAnimation空对象导致crash

    今天调试一个老程序,发现有时运行动画会crash,仔细检查了基本的内存管理,发现都没问题!后来发现了问题,这个程序用的是下面的代码 [self performSelectorInBackground: ...

  4. 【Django】有关多用户管理的一点小经验分享

    前言 最近,笔者因为需要开发一个系统作为毕设的展示,因此就产生了有关多用户管理的问题.在这里我把自己的需求重新阐明一下:能够通过Django自带的用户管理框架,实现多用户的管理,例如登录.登出.ses ...

  5. 来自IOS开发工程师的零基础自学HTML5经验分享

    移动互联网的火爆,而Html具有跨平台.开发快的优势,越来越受到开发者的青睐.感谢IOS开发工程师“小木___Boy”’带来的HTML5学习经验分享. 一.学习途径 1.很多视频网站 比如慕课.和极客 ...

  6. 分享调试SI4432的一些小经验(转)

    分享调试SI4432的一些小经验 最近使用 STM8F103 + SI4432 调无线,遇到问题不少,此处有参考过前辈的经验: 1.硬件把板给到我时USB烧录线带供电(5V),此供电接到LDO输出,就 ...

  7. 关于启用 HTTPS 的一些经验分享(一)

    转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...

  8. fir.im Weekly - 8 个不能错过的 iOS / Android 技术分享

    本期 fir.im Weekly 收集了 2 月下旬新鲜出炉的 iOS /Android 技术分享.源码等,iOS 中图片技术的解压缩.逆向实战.iOS SDK 实践,Android架构思考.Andr ...

  9. 【原创经验分享】JQuery(Ajax)调用WCF服务

    最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...

  10. (转)CMOS Sensor的调试经验分享

    CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...

随机推荐

  1. CronTab命令实例

    每2分钟 将date写入到time.log(以下的为奇数分钟运行) */2 * * * * date >> ~/time.log 1-59/2 * * * * date >> ...

  2. HDU 5044 Tree 树链剖分+区间标记

    Tree Problem Description You are given a tree (an acyclic undirected connected graph) with N nodes. ...

  3. 关于前端js拼接字符串的一点小经验

    1.今天在做项目的时候遇到一个问题,就是使用onclick="xxx()"  点击事件的时候,参数如果为全数字就会出现点击无反应的问题.但是当参数为字符串或者动态内容的时候就会出现 ...

  4. Oracle - 数据更新 - 增删改

    /* 数据的更新 增加 删除 修改 */ -----------------------------------增加(一次只能插入一条数据) --自定义插入数据列的顺序 ,,); --按照数据库默认的 ...

  5. __setup 在内核中的作用【转】

    本文转载自:http://blog.csdn.net/lanmanck/article/details/7613305 本文来自: http://blog.chinaunix.net/uid-1379 ...

  6. get the page name from url

    https://stackoverflow.com/questions/1874532/better-way-to-get-page-name The way I interpret the ques ...

  7. YTU 2901: G-险恶逃生II

    2901: G-险恶逃生II 时间限制: 1 Sec  内存限制: 128 MB 提交: 44  解决: 14 题目描述     SOS!!!koha is trapped in the danger ...

  8. Java String 和 new String()的区别

    Java String 和 new String()的区别 本文转自:http://www.cnblogs.com/heima-jieqi/archive/2012/04/10/2440086.htm ...

  9. java抛出异常后,后续代码是否可继续执行

    参考:https://www.cnblogs.com/wangyingli/p/5912269.html 仅此可正常执行异常后内容 try{ throw new Exception("参数越 ...

  10. Error: Target id 'android-5' is not valid. Use 'android list targets' to get the target ids.

    输入命令: lianxumacdeMac-mini-2:hello-jni lianxumac$ android list targets Available Android targets: --- ...