ios开发碎记录

作者: DaZenD | 来源:发表于2018-08-17 18:58 被阅读133次

ios开发碎知识点

前言.

整理好久的了,最近很少开发ios了,再不发估计ios就废了

😋ios日常开发中,有必要记录一下零碎的知识点,在此,也记录一下,开放出来,慢慢完善,期待您的反馈。

1 调用系统相机,文字语言类型设置

capture.png

2 界面卡顿,防止vc被push多次

自定义导航栏控制器

//FIXME:这样做防止主界面卡顿时,导致一个ViewController被push多次、

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.childViewControllers.count > 0) {
        if ([[self.childViewControllers lastObject] isKindOfClass:[viewController class]]) {
            return;
        }
    }
    
    [super pushViewController:viewController animated:animated];
}

3 数组拷贝 & 字符串拷贝的区别

NSMutableArray *array = [NSMutableArray arrayWithObject:element];
NSMutableArray *mutableCopyArray = [array mutableCopy];
[mutableCopyArray[0] addObject:@2];
    
NSMutableArray *element = [NSMutableArray arrayWithObject:@1];
NSMutableArray *array = [NSMutableArray arrayWithObject:element];
NSMutableArray *mutableCopyArray = [array mutableCopy];
[mutableCopyArray[0] addObject:@2];    
    

问题:
为什么当array内的内容是数组的时候,mutableCopyArray 和 array的内容一起改变,但是array的内容是字符串的时候,内容是单独改变的

答:
因为字符串这种对象比较特殊,oc把字符串存在常量内存区域,意味着内容相同的字符串,内存地址都是相同的,你可以试试,即使copy也没用。

所以,当你改了一个array中的字符串元素,实际上并不是改变改指针下的字符串值,而是改变了容器这个元素的指针

4清除缓存和cookie

/**清除缓存和cookie*/
- (void)cleanCacheAndCookie{
    //清除cookies
    NSHTTPCookie *cookie;
    NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [storage cookies]){
        [storage deleteCookie:cookie];
    }
    //清除UIWebView的缓存
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
    NSURLCache * cache = [NSURLCache sharedURLCache];
    [cache removeAllCachedResponses];
    [cache setDiskCapacity:0];
    [cache setMemoryCapacity:0];
}

5 runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么

assign和weak的区别在于weak能再修饰对象释放时自动将指针置空,assign不会,那用OBJC_ASSOCIATION_ASSIGN修饰的对象是属于weak和还是assign

如何手动实现weak属性的方式,大概实现是通过associate一个中间变量,在这个变量dealloc的时候将 weak指针 置空。如果这种方式是正确的话,那是不是说 OBJC_ASSOCIATION_ASSIGN 修饰的assiciate对象 在主对象dealloc的时候需要讲它的指针置空呢

OBJC_ASSOCIATION_ASSIGN 还真的必须配合手动 设置 nil 使用,要不在属性施放后,调用会exc_bad

6 导航栈中控制器的’复用‘异常

[a, b, c] > push A 新实例 a1 > [a, b, c, a1]

Pushing the same view controller instance more than once is not supported
不允许:不支持压栈相同控制器实例

[a, b, c] 导航数组操作将a实例再添加到导航数组 > [a, b, c, a]

All view controllers in a navigation controller must be distinct

不允许:导航控制器中的子控制器必须是唯一的

7 显示html格式文本 并修改默认的蓝色和下划线

NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithData:[contentStr dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

后续。。。

相关文章

  • ios开发碎记录

    ios开发碎知识点 前言. 整理好久的了,最近很少开发ios了,再不发估计ios就废了 ?ios日常开发中,有必要...

  • iOS杂记(持续更新)

    在这里记录一些关于iOS开发零碎的技巧. 如何通过一个view拿到该view当前的viewController.最...

  • iOS 学习心得记录之:拿到了ViewController就等于

    iOS 开发心得记录之:拿到了ViewController就等于拿到了view 在学习开发 iOS 的时候,我有时...

  • **iOS OC** 转 **Swift**开发问题记录

    iOS OC 转 Swift开发问题记录 之前一直使用OC语言开发iOS应用,时代在进步,使用Swift语言开发已...

  • IOS 生成证书

    第一次接触 IOS 开发,将遇到的问题做记录。 前提: 1、已经注册 IOS 开发者(付费) ...

  • 01、iOS碎碎念

    本文写一写与iOS相关的碎碎念,每周更新一条。 8、思考一个问题:为什么官方规定,在iOS App开发中,对用户交...

  • 开发杂谈

    在开发过程中遇到的零碎知识点,就把它们记录下来,方便以后回顾 iOS一些完整的项目 https://www.jia...

  • iOS开发笔记

    原文请见github上iOS开发笔记 iOS开发笔记 记录了在iOS开发中踩过的坑和一些问题解决 微信的openi...

  • iOS 开发中的Tips

    iOS Tips 这里将记录iOS开发中的技巧,不定期更新内容 reloadData 调用 reloadData ...

  • iOS 开发记录

    打印方法名 类、方法判断 emoji表情转换 数组和字典与NSData互转 字典、JSON互转 自定义结构体(类似...

网友评论

  • 小五92:作者你好,请问第六点要表达什么意思呀?
    小五92:@DaZenD ok
    DaZenD:开发中小经验,没啥意思,就是导航栈中实例唯一

本文标题:ios开发碎记录

本文链接:https://www.haomeiwen.com/subject/flbtiftx.html