iOS---小经验分享
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---小经验分享的更多相关文章
- [转]如何通过 App Store 审核(iOS 开发者经验分享)
CocoaChina交流社区曾经发起一个主题讨论,关于iOS开发者遇到审核失败的原因及解决办法的,有价值的回复内容如下: wubo9935 App中设计的图标与Apple原生图标类似,Apple原生图 ...
- 博客后台迁移至i.cnblogs.com及小经验分享
大家好!我们已经将博客后台从原来的 www.cnblogs.com/博客地址名/admin/ 迁移至独立的二级域名 i.cnblogs.com.如果您发现任何问题,麻烦您立即向我们反馈. 虽然这次迁移 ...
- iOS 小经验:UIAnimation空对象导致crash
今天调试一个老程序,发现有时运行动画会crash,仔细检查了基本的内存管理,发现都没问题!后来发现了问题,这个程序用的是下面的代码 [self performSelectorInBackground: ...
- 【Django】有关多用户管理的一点小经验分享
前言 最近,笔者因为需要开发一个系统作为毕设的展示,因此就产生了有关多用户管理的问题.在这里我把自己的需求重新阐明一下:能够通过Django自带的用户管理框架,实现多用户的管理,例如登录.登出.ses ...
- 来自IOS开发工程师的零基础自学HTML5经验分享
移动互联网的火爆,而Html具有跨平台.开发快的优势,越来越受到开发者的青睐.感谢IOS开发工程师“小木___Boy”’带来的HTML5学习经验分享. 一.学习途径 1.很多视频网站 比如慕课.和极客 ...
- 分享调试SI4432的一些小经验(转)
分享调试SI4432的一些小经验 最近使用 STM8F103 + SI4432 调无线,遇到问题不少,此处有参考过前辈的经验: 1.硬件把板给到我时USB烧录线带供电(5V),此供电接到LDO输出,就 ...
- 关于启用 HTTPS 的一些经验分享(一)
转载: 关于启用 HTTPS 的一些经验分享(一) 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在今天,免费提供证书服务的 Let's Encrypt ...
- fir.im Weekly - 8 个不能错过的 iOS / Android 技术分享
本期 fir.im Weekly 收集了 2 月下旬新鲜出炉的 iOS /Android 技术分享.源码等,iOS 中图片技术的解压缩.逆向实战.iOS SDK 实践,Android架构思考.Andr ...
- 【原创经验分享】JQuery(Ajax)调用WCF服务
最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...
- (转)CMOS Sensor的调试经验分享
CMOS Sensor的调试经验分享 我这里要介绍的就是CMOS摄像头的一些调试经验. 首先,要认识CMOS摄像头的结构.我们通常拿到的是集成封装好的模组,一般由三个部分组成:镜头.感应器和图像信号处 ...
随机推荐
- Spring嵌套事务控制
A类 callBack_test() B类 testadd() C类 select(),得查询到B类testadd方法中新增的数据.以及初始化一些属性 场景:A类 嵌套 B类 B类嵌套C ...
- 初识 flask
1,Python现阶段三大主流web框架Django, Tornado, Flask对比 Django主要特点是大而全,集成了很多组件,列如:Models Admin Form等等,不管用得用不着反正 ...
- windows安装SVN服务器并设置开机启动
1.安装SVN服务器,到http://subversion.apache.org/packages.html上下载windows版的SVN,并安装,在命令行下运行svn命令,如下所以,则svn服务器安 ...
- (1)JDBC基础-java链接mysql数据库
怎么操作数据库: 1,通过客户端(比如mac的终端,或者sql pro等专业工具)登陆数据库服务器(mysql -u root -p) 2,编写sql语句 3,发生sql语句到数据库服务器执行. JD ...
- js控制页面显示
两个菜单切换显示页面内容: js控制代码, /** JS初始化 **/ $(document).ready(function() { $('#email_btn').click(function(){ ...
- 替换Android自带apk【转】
本文转载自:http://www.voidcn.com/article/p-gonowdjh-vz.html 安卓自带的app放在/system/app/下,当我们想要替换这些应用时可以参考如下步骤: ...
- 安装linux各种桌面环境
1.安装kde ①添加 KDE SC 4.11 库 打开一个终端窗口,在终端窗口中输入如下命令: sudo add-apt-repository ppa:kubuntu-ppa/backports 回 ...
- RabbitMQ简述
官网教程 RabbitMQ是流行的开源消息队列系统,用erlang语言开发.RabbitMQ是AMQP(高级消息队列协议)的标准实现.支持多种客户端,如:Python.Ruby..NET.Java.J ...
- java实现io读取数据
ServletInputStream inputStream = request.getInputStream(); BufferedReader br = new BufferedReader(ne ...
- 【monkey】
在Android文件系统中的存放路径是:/system/framework/monkey.jarMonkey.jar 程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在And ...