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. Spring嵌套事务控制

    A类   callBack_test() B类   testadd() C类   select(),得查询到B类testadd方法中新增的数据.以及初始化一些属性 场景:A类 嵌套 B类  B类嵌套C ...

  2. 初识 flask

    1,Python现阶段三大主流web框架Django, Tornado, Flask对比 Django主要特点是大而全,集成了很多组件,列如:Models Admin Form等等,不管用得用不着反正 ...

  3. windows安装SVN服务器并设置开机启动

    1.安装SVN服务器,到http://subversion.apache.org/packages.html上下载windows版的SVN,并安装,在命令行下运行svn命令,如下所以,则svn服务器安 ...

  4. (1)JDBC基础-java链接mysql数据库

    怎么操作数据库: 1,通过客户端(比如mac的终端,或者sql pro等专业工具)登陆数据库服务器(mysql -u root -p) 2,编写sql语句 3,发生sql语句到数据库服务器执行. JD ...

  5. js控制页面显示

    两个菜单切换显示页面内容: js控制代码, /** JS初始化 **/ $(document).ready(function() { $('#email_btn').click(function(){ ...

  6. 替换Android自带apk【转】

    本文转载自:http://www.voidcn.com/article/p-gonowdjh-vz.html 安卓自带的app放在/system/app/下,当我们想要替换这些应用时可以参考如下步骤: ...

  7. 安装linux各种桌面环境

    1.安装kde ①添加 KDE SC 4.11 库 打开一个终端窗口,在终端窗口中输入如下命令: sudo add-apt-repository ppa:kubuntu-ppa/backports 回 ...

  8. RabbitMQ简述

    官网教程 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现.支持多种客户端,如:Python.Ruby..NET.Java.J ...

  9. java实现io读取数据

    ServletInputStream inputStream = request.getInputStream(); BufferedReader br = new BufferedReader(ne ...

  10. 【monkey】

    在Android文件系统中的存放路径是:/system/framework/monkey.jarMonkey.jar 程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在And ...