前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS---小经验分享

iOS---小经验分享

作者头像
用户1941540
发布2018-05-11 12:08:26
6010
发布2018-05-11 12:08:26
举报
文章被收录于专栏:ShaoYLShaoYLShaoYL

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

还待补充。。。。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.字符串在block中得赋值
    • 2.xib--当一个视图是通过xib创建时,且使用自动布局--autolayout,那么当把xib,添加到其他视图中得时候,会得到意想不到的结果。
    • 3.集成通讯录UI,然后跳转到发短信界面
      • 还待补充。。。。
      相关产品与服务
      短信
      腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档