swift 订阅
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。 展开全文
Swift,苹果于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力和趣味性的系统编程语言。Swift的设计以安全为出发点,以避免各种常见的编程错误类别。 [1]  2015年12月4日,苹果公司宣布其Swift编程语言开放源代码。长600多页的The Swift Programming Language [2]  可以在线免费下载。
信息
源    于
Objective-C
外文名
Swift
发布时间
2014年6月2日
发行组织
Apple
中文名
雨燕
参考语言
C,JavaScript,Python,Java
系    统
macOS,iOS,linux
SWIFT发展历史
2014-6-3 Swift于WWDC苹果开发者大会发布。 发布(6张) 2014-6-4 《Swift中文版》翻译组在github上进行协同翻译 [3]  。此项目开始不到一周就获得了1067个star。该项目的发起人是北航的大三学生 [4]  。2014-6-12《Swift中文版》第一版发布 [5]  。2015年12月4日,苹果公司宣布其Swift编程语言开放源代码 [3]  。长600多页的The Swift Programming Language [2]  可以在线免费下载。同时可以在苹果官方Github下载 [3]  。2020年最新一期的编程语言排行榜显示,Swift从第15名上升至第9名。 [6] 
收起全文
精华内容
下载资源
问答
  • Swift中文教程DOC版

    千次下载 热门讨论 2014-06-04 17:51:49
    Apple Swift编程语言入门教程 中文版本文档。主要通过实例讲解基础的语法
  • 本文介绍几点Swift 3.0相对于Swift 2.0的一些改变和使用方法 关于Swift 3.0的具体使用指南大家可以去阅读Swift 3.0中文文档(Swift 3.0 中文文档)和Swift 3.0官网文档(Swift 3.0 官网文档)

    关于Swift 3.0的具体使用指南大家可以去阅读Swift 3.0中文文档(Swift 3.0 中文文档)和Swift 3.0官网文档(Swift 3.0 官网文档

    1.首当其冲的就是闭包的修改。

    升级完Xcode8之后根据提示会默认帮你进行一些修改。但是修改完成还有500+多个错误很大一部分是闭包的修改,我的内心是这样的。

    在Swift2.3中我们写闭包是这样写:

        //Swift 2.2
        typealias detailCollectBlock = (state:Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(detailCollect:detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
    
        //在需要的时候调用
        self.detailCollect?(state:true)
    
        //
        controller.detailPraise({ (state) in
            model.isPraise = (state ? "1" : "0")
                })
        //Swift3中的 使用方法1 
        typealias detailCollectBlock = (Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(detailCollect:@escaping detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
        //在需要的时候调用
        self.detailCollect?(true)
    
        //在上页面回调接收的时候的用法
        controller.detailPraise(detailPraise: { (<#Bool#>) in
             model.isPraise = (state ? "1" : "0")
                })
    
        //使用方法2
        typealias detailCollectBlock = (_ state:Bool)->Void
    
        var detailCollect:detailCollectBlock?
    
        func detailCollect(_ detailCollect:@escaping detailCollectBlock)
        {
            self.detailCollect = detailCollect
        }
    
        //在需要的时候调用
        self.detailCollect?(state:true)
    
        //
        controller.detailPraise({ (state) in
            model.isPraise = (state ? "1" : "0")
                })

    这个时候大家应该就可以从代码中发现,swift3中需要定义闭包的时候不需要命名参数名,只需要告诉参数类型即可.

    现在迁移我们也可以使用方法2,这时我们的参数在使用时还是省略的(就和2.2时使用相同),外部调用闭包的时候就不需要在修改了。这样可以减少很多工作量,因为项目中的闭包实在是太多了..

    如果闭包不是在当前作用域内执行而是还要继续传递到别的函数里的话, 那就必须加上@escaping,本身的意思是逃逸的

    别接收回调的地方也和swift2.2不同,回调方法中会有block的名字,但是没有参数名了(方法2中就没有名字啦),只有参数的类型,我们需要自己来定义参数的名称.

    详情见SE-0103SE-0118

    2.在Swift2.3中我们函数在被调用时的第一个参数名会被省略,除非在前面在此定义eq:

    //这样才会在调用的时候显示参数名 swift2.2时
    func addCollect(detailId detailId)

    在Swift3中我们不需要在这样做了。会一直带有第一个参数名

    3.UIControlState等的表示状态的常量 都变成了首字母小写

    //Swift2.2
    self.toolsView?.praiseButton.setImage(UIImage.init(named: "tool_icon_like_normal"), forState: .Normal)
    
    self.phone?.componentsSeparatedByString() //swift2.2
    
    //swift3
    self.toolsView?.praiseButton.setImage(UIImage.init(named: "tool_icon_like_normal"), for: .normal)
    
    self.phone?.components(separatedBy: "-") //swift3

    这样做也是为了脱离OC冗长的方法命名,精简了语意,但是可读性还需要长时间的检验吧

    3.使用NSDictionary的修改

    dict.setObject(true, forKey: "state")
    dict.setObject(num, forKey: "key")

    在之前我们一直使用NSDictionary(<font color=gray>因为从OC转过来感觉还是NSarray和NSDictionary用起来顺手的</font> ),用来设置key的时候。现在需要添加NSCopying ,所以我都改成Dictionary啦哈哈。现在我们也应该在之后写代码的时候避免使用NSString,NSArray, NSDictionary等因为现在更加不方便了~~

    4.泛型

    //swift2.2
     var selectResult:PHFetchResult?
    
    //swift3
     var selectResult:PHFetchResult<PHAsset>?

    这个是项目中图片管理器所用到的,现在就是需要在PHFetchResult后面告诉它是什么类型,也可以是AnyObject
    这个后面还需要详细的介绍。给自己挖个坑

    5.没有了CGRectMake 改用CGRect.init来初始化或者我们写一个他的扩展.来模拟之前的CGRectmake

    //用来代替,修改的CGRectMake
    func CGRectMake(_ x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat)->CGRect
    {
        return CGRect.init(x: x, y: y, width: width, height: height)
    }

    6.关于颜色的初始化方法UIColor.color都去掉了括号,并且color的后缀页去掉了,新添加了Url类,也是为了脱离OC的NSUrl吧.

    7.GCD的改变 更加Swift化.

    DispatchQueue.main.async {
        let controller = LoginViewController()
        self.present(controller, animated: true, completion: nil)
                    }

    其实GCD的用法没有太多的改变,只是写法变的更加Swift,去掉了之前C语言的形式,多写读多熟悉应该就好了。

    9.NSString操作的变化

    //swift2.2
       let ch = (pinYinString as NSString).character(at: 0)
    //swift3
        let ch=pinYinString?.unicodeScalars[(pinYinString?.unicodeScalars.startIndex)!]

    因为我需要取到拼音的首字母来进行排序,所以需要获取到首字母的ASCII码。所以使用NSString更方便。但是现在不能这样用了,所以我们只能使用Swift中的这个unicodeScalars来获取啦。

    8.枚举变成了小写,自己定义的时候是大写当他变成.语法的时候Xcode页把它变成了小写

    展开全文
  • swift 3迁移到swift5 swift版本迁移指南

    千次阅读 2019-09-30 14:36:32
    Swift 5已经发布下面是官方swift5的介绍。 IntroducingSwift 5.1 Swift 5.1now makes it easier to create and share binary frameworks with others. It also includes features that make it easier to design ...

    Swift 5已经发布下面是官方swift5的介绍。

    Introducing Swift 5.1

    Swift 5.1 now makes it easier to create and share binary frameworks with others. It also includes features that make it easier to design better APIs and reduce the amount of common boilerplate code.

    Key Features

    • Module stability defines a new text-based module interface file that describes the API of a binary framework.
    • Property wrappers introduce a general purpose syntax for defining custom access patterns for property values.
    • Opaque result types help hide implementation details in APIs.
    • 'Self' can now be used for classes and value types.
    • Support for handling and updating diffs on collections of appropriate types.
    • Improvements to SIMD and String types.

    此版本终于迎来了 ABI 稳定,因此 Swift 运行时现在可以引入到 Apple 平台各类操作系统的不同版本中,包括 macOS、iOS、tvOS 与 watchOS。Swift 5 还引入了构建块的新功能,包括重新实现 String、在运行时对执行内存的独占访问与新数据类型,以及对动态可调用类型的支持。

    Swift 5 兼容 Swift 4、Swift 4.1 和 Swift 4.2,Xcode 10.2 中包含了一个代码迁移器,可以自动处理许多迁移需要用到的源码更改。

    语言更新

    稳定的 ABI 与二进制兼容性

    ABI 已经稳定,因此 Swift 库现在可以整合到每个 macOS、iOS、tvOS 和 watchOS 版本中,应用将更容易构建,并且体积更小,因为它们不必包含这些库。

    标准库更新

    Swift 5 中的标准库包括以下新特性:

    • 使用 UTF-8 编码重新实现的 String 可以产生更快的代码,之前我们已经报导过:Swift 5 将使用 UTF-8 作为首选字符串编码
    • 改进了对字符串中原生文本的支持
    • 标准库添加 Result 和 SIMD 矢量类型
    • 增强了字符串插值功能,为从数据构造文本提供了更多灵活性
    • 改进了 Dictionary 和 Set 的性能

     

    目前应该有不少的项目还是处于OC Swift混编的状态, 那么如何将这部分老的OC代码迁移至Swift版本?

    1:重写(量大的话不太现实), 比较耗费精力和时间
    2:使用工具(本片文章主要推荐的)   

    备份好代码,对于 Xcode 我有一个经验再次和大家分享一下:Xcode 有两个版本,一个不稳定的版本和一个更不稳定的版本。

    Swiftify

    xcode可直接下载安装, <Swiftify for Xcode>下载安装后需要简单的配置方可使用:

    1. -系统偏好设置>"扩展"中为Xcode Source Editor(Xcode源码编辑器)选择"Swiftyfy for Xcode"
    2. 打开Xcode > Editor > 菜单下看到新的"Swiftify"子菜单

    这里有三个选项:

    • 1: Convert Selection to Swift(将选中的代码块转化成Swift)
    • 2:Convert File to Swift(将文件转化成swift语言)
    • 3:Paste as Swift (以Swift方式粘贴代码)

    不同注册用户代码转化有大小限制:

    • 未注册用户: 1KB/每次 大概也就100代码不到吧
    • 注册未付费用户: 2KB/每次

    选中代码转化成Swift快捷键配置

    自动转化配置项介绍

    功能丰富, 分别针对工程文件,静态库文件,部分OC代码转化后OC Swift混编的处理, PCH的处理,Xib/Storyboard处理,被转化后的swift文件被其他OC文件引用的处理,'\n'字符串的出里,以及是否需要将使用的静态库转化成动态库的处理等

    文档列表都在这里

    https://support.swiftify.com/hc/en-us/articles/360028372231-Update-Xcode-project-files

    链接:

    自动转化配置项

    网页端转化链接:
    https://objectivec2swift.com/#/converter/code/

    相对于  swift3迁移swift4    swift3迁移swift5还是比较简单。

    展开全文
  • SwiftUI综合了Flutter、Kotlin等新生利器的特性,它诞生了。 不用不知道,一用吓一跳,以往的UITableView加上删除功能、定义Cell、定义模型等,需要多个文件,一堆代码。 然而SwiftUI打破传统,类似这种列表,只...

    SwiftUI综合了Flutter、Kotlin等新生利器的特性,它诞生了。

    不用不知道,一用吓一跳,以往的UITableView加上删除功能、定义Cell、定义模型等,需要多个文件,一堆代码。

    然而SwiftUI打破传统,类似这种列表,只需要4、5十行代码就可以解决,而且我还算上文件头部的8行备注啊。

    这里只记录一个用法,怎么桥接Swift项目与SwiftUI界面。

    用方法UIHostingController(rootView: )把SwiftUI中的ContentView包装成控制器,得到的控制器就把它当成正常的UIViewController使用即可,可以present,可以push。

    就是这样:

    let controller = UIHostingController(rootView: contentView)

    展开全文
  • swift ~ 2020年 swift面试题

    千次阅读 2020-05-27 19:04:50
    Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。 2、举例说明Swift里面有哪些是 Objective-C中没有的? Swift...

     联系人:石虎 QQ:1224614774  昵称嗡嘛呢叭咪哄

                          QQ:807236138  群称iOS 技术交流学习群

                         QQ群:713799633   群称:iOS技术交流学习群-2

     

    一、面试题

    
    
    1、说说你认识的Swift是什么?
    
        Swift是苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C共同运行于MAC OS和iOS平台,用于搭建基于苹果平台的应用程序。
    
    
    2、举例说明Swift里面有哪些是 Objective-C中没有的?
    
        Swift引入了在Objective-C中没有的一些高级数据类型,例如tuples(元组),可以使你创建和传递一组数值。
        wift还引入了可选项类型(Optionals),用于处理变量值不存在的情况。可选项的意思有两种:一是变量是存在的,
        例如等于X,二是变量值根本不存在。Optionals类似于Objective-C中指向nil的指针,但是适用于所有的数据类型,而非仅仅局限于类,Optionals 相比于Objective-C中nil指针更加安全和简明,并且也是Swift诸多最强大功能的核心。
    
    
    3、NSArray与NSSet的区别?
    
        NSArray内存中存储地址连续,而NSSet不连续
        NSSet效率高,内部使用hash查找;NSArray查找需要遍历
        NSSet通过anyObject访问元素,NSArray通过下标访问
    
    
    4、Swift比Objective-C有什么优势?
    
    	Swift全面优于Objective-C语言,性能是Objective-C的1.3倍,上手更加容易。
    
    
    5、NSHashTable与NSMapTable?
    
        NSHashTable是NSSet的通用版本,对元素弱引用,可变类型;可以在访问成员时copy
        NSMapTable是NSDictionary的通用版本,对元素弱引用,可变类型;
        可以在访问成员时copy
        (注:NSHashTable与NSSet的区别:NSHashTable可以通过option设置元素弱引用/copyin,只有可变类    型。但是添加对象的时候NSHashTable耗费时间是NSSet的两倍。
        NSMapTable与NSDictionary的区别:同上)
    
    
    6、Swift 是一门安全语言吗?
    
        Swift是一门类型安全的语言,Optionals就是代表。Swift能帮助你在类型安全的环境下工作,如果你的代码中需要使用String类型,Swift的安全机制能阻止你错误的将Int值传递过来,这使你在开发阶段就能及时发现并修正问题。
    
    
    7、属性关键字assign、retain、weak、copy
    
        assign:用于基本数据类型和结构体。如果修饰对象的话,当销毁时,属性值不会自动置nil,可能造成野指针。
        weak:对象引用计数为0时,属性值也会自动置nil
        retain:强引用类型,ARC下相当于strong,但block不能用retain修饰,因为等同于assign不安全。
        strong:强引用类型,修饰block时相当于copy。
    
    
    8、weak属性如何自动置nil的?
    
        Runtime会对weak属性进行内存布局,构建hash表:以weak属性对象内存地址为key,weak属性值(weak自身地址)为value。当对象引用计数为0 dealloc时,会将weak属性值自动置nil。
    
    
    9、Swift 是一门安全语言吗?
    
        Swift是一门类型安全的语言,Optionals就是代表。Swift能帮助你在类型安全的环境下工作,如果你的代码中需要使用String类型,Swift的安全机制能阻止你错误的将Int值传递过来,这使你在开发阶段就能及时发现并修正问题。
    
    
     10、内存泄露问题?
    
    	主要集中在循环引用问题中,如block、NSTime、perform selector引用计数问题。
    
    
    11、Block的循环引用、内部修改外部变量、三种block
    
        block强引用self,self强引用block
        内部修改外部变量:block不允许修改外部变量的值,这里的外部变量指的是栈中指针的内存地址。
    __block的作用是只要观察到变量被block使用,就将外部变量在栈中的内存地址放到堆中。
        三种block:
            NSGlobalBlack(全局)、
            NSStackBlock(栈block)、
            NSMallocBlock(堆block)
    
    
    12、KVO底层实现原理?手动触发KVO?swift如何实现KVO?
    
        KVO原理:当观察一个对象时,runtime会动态创建继承自该对象的类,并重写被观察对象的setter方法,重写的setter方法会负责在调用原setter方法前后通知所有观察对象值得更改,最后会把该对象的isa指针指向这个创建的子类,对象就变成子类的实例。
        如何手动触发KVO:在setter方法里,手动实现NSObject两个方法:willChangeValueForKey、didChangeValueForKey
        swift的kvo:继承自NSObject的类,或者直接willset/didset实现。
    
    
    13、categroy为什么不能添加属性?怎么实现添加?与Extension的区别?category覆盖原类方法?多个category调用顺序
    
        Runtime初始化时categroy的内存布局已经确定,没有ivar,所以默认不能添加属性。
        使用runtime的关联对象,并重写setter和getter方法。
        Extenstion编译期创建,可以添加成员变量ivar,一般用作隐藏类的信息。必须要有类的源码才可以添加,如NSString就不能创建Extension。
        category方法会在runtime初始化的时候copy到原来前面,调用分类方法的时候直接返回,不再调用原类。如何保持原类也调用(https://www.jianshu.com/p/40e28c9f9da5)。
    多个category的调用顺序按照:Build Phases ->Complie Source 中的编译顺序。
    
    
    14、load方法和initialize方法的异同。——主要说一下执行时间,各自用途,没实现子类的方法会不会调用父类的?
    
        load initialize 调用时机 app启动后,runtime初始化的时候 第一个方法调用前调用 调用顺序 父类->本类->分类 父类->本类(如果有分类直接调用分类,本类不会调用) 没实现子类的方法会不会调用父类的 否 是 是否沿用父类实现 否 是
    
    见图 1
    
    15、对 runtime 的理解。——主要是方法调用时如何查找缓存,如何找到方法,找不到方法时怎么转发,对象的内存布局
    
        OC中向对象发送消息时,runtime会根据对象的isa指针找到对象所属的类,然后在该类的方法列表和父类的方法列表中寻找方法执行。如果在最顶层父类中没找到方法执行,就会进行消息转发:Method resoution(实现方法)、fast forwarding(转发给其他对象)、normal forwarding(完整消息转发。可以转发给多个对象)
    
    16、runtime 中,SEL和IMP的区别?
    
        每个类对象都有一个方法列表,方法列表存储方法名、方法实现、参数类型,SEL是方法名(编号),IMP指向方法实现的首地址
    
    
    17、autoreleasepool的原理和使用场景?
    
        若干个autoreleasepoolpage组成的双向链表的栈结构,objc_autoreleasepoolpush、objc_autoreleasepoolpop、objc_autorelease
        使用场景:多次创建临时变量导致内存上涨时,需要延迟释放
    autoreleasepoolpage的内存结构:4k存储大小
    
    见图 2
    
    
    18、Autorelase对象什么时候释放?
    
        在没有手加Autorelease Pool的情况下,Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop。
    
    
    19、Runloop与线程的关系?Runloop的mode? Runloop的作用?内部机制?
    
        每一个线程都有一个runloop,主线程的runloop默认启动。
        mode:主要用来指定事件在运行时循环的优先级
        作用:保持程序的持续运行、随时处理各种事件、节省cpu资源(没事件休息释放资源)、渲染屏幕UI
    
    
    20、iOS中使用的锁、死锁的发生与避免
    
        @synchronized、信号量、NSLock等
        死锁:多个线程同时访问同一资源,造成循环等待。GCD使用异步线程、并行队列
    
    
    21、NSOperation和GCD的区别
    
        GCD底层使用C语言编写高效、NSOperation是对GCD的面向对象的封装。对于特殊需求,如取消任务、设置任务优先级、任务状态监听,NSOperation使用起来更加方便。
        NSOperation可以设置依赖关系,而GCD只能通过dispatch_barrier_async实现
        NSOperation可以通过KVO观察当前operation执行状态(执行/取消)
        NSOperation可以设置自身优先级(queuePriority)。GCD只能设置队列优先级    (DISPATCH_QUEUE_PRIORITY_DEFAULT),无法在执行的block中设置优先级
        NSOperation可以自定义operation如NSInvationOperation/NSBlockOperation,而GCD执行任务可以自定义封装但没有那么高的代码复用度
        GCD高效,NSOperation开销相对高
    
    
    22、App启动优化策略?main函数执行前后怎么优化
    
        启动时间 = pre-main耗时+main耗时
        pre-main阶段优化:
            删除无用代码
            抽象重复代码
            +load方法做的事情延迟到initialize中,或者+load的事情不宜花费太多时间
            减少不必要的framework,或者优化已有framework
       
         Main阶段优化
            didFinishLauchingwithOptions里代码延后执行
            首次启动渲染的页面优化
        
    
    23、Swift 支持面向过程编程吗?
    
        它采用了 Objective-C 的命名参数以及动态对象模型,可以无缝对接到现有的 Cocoa 框架,并且可以兼容 Objective-C 代码,支持面向过程编程和面向对象编程
    
    
    
    24、Swift 是一门安全语言吗?
    
        Swift是一门类型安全的语言,Optionals就是代表。Swift能帮助你在类型安全的环境下工作,如果你的代码中需要使用String类型,Swift的安全机制能阻止你错误的将Int值传递过来,这使你在开发阶段就能及时发现并修正问题。
    
    
    25、Swift中如何定义变量和常量?
    
    	使用let来声明常量,使用var来声明变量
    
    
    26、oc与js交互
    
        拦截url
        JavaScriptCore(只适用于UIWebView)
        WKScriptMessageHandler(只适用于WKWebView)
        WebViewJavaScriptBridge(第三方框架)
    
    
    27、Swift的内存管理是怎样的?
    
    	Swift 使用自动引用计数(Automatic Reference Counting, ARC)来简化内存管理
    
    
    28、struct、Class的区别
    
        class可以继承,struct不可以
        class是引用类型,struct是值类型
        struct在function里修改property时需要mutating关键字修饰
    
    
    29、访问控制关键字(public、open、private、filePrivate、internal)
    
        public与open:public在module内部中,class和func都可以被访问/重载/继承,外部只能访问;而open都可以
        private与filePrivate:private修饰class/func,表示只能在当前class源文件/func内部使用,外部不可以被继承和访问;而filePrivate表示只能在当前swift源文件内访问
        internal:在整个模块或者app内都可以访问,默认访问级别,可写可不写
    
    
    30、OC与Swift混编
    
        OC调用swift:import "工程名-swift.h” @objc
        swift调用oc:桥接文件
    
    
    31、用Swift定义一个数组和字典?
    
        let emptyArray = String[]()
        let emptyDictionary = Dictionary<String, Float>()
    
    
    32、try、try?与try!
    
        try:手动捕捉异常
        try?:系统帮我们处理,出现异常返回nil;没有异常返回对应的对象
        try!:直接告诉系统,该方法没有异常。如果出现异常程序会crash
    
    
    33、guard与defer
    
        guard用于提前处理错误数据,else退出程序,提高代码可读性
        defer延迟执行,回收资源。多个defer反序执行,嵌套defer先执行外层,后执行内层
    
    
    34、架构&设计模式
    
        MVC设计模式介绍
        MVVM介绍、MVC与MVVM的区别?
        ReactiveCocoa的热信号与冷信号
        缓存架构设计LRU方案
        SDWebImage源码,如何实现解码
        AFNetWorking源码分析
        组件化的实施,中间件的设计
        哈希表的实现原理?如何解决冲突
    
    
    35、数据结构&算法
    
        快速排序、归并排序
        二维数组查找(每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数)
        二叉树的遍历:判断二叉树的层数
        单链表判断环
    
    
    
    36、内存泄露问题?
    
    	主要集中在循环引用问题中,如block、NSTime、perform selector引用计数问题。
    
    
    37、crash防护?
    
        unrecognized selector crash
        KVO crash
        NSNotification crash
        NSTimer crash
        Container crash(数组越界,插nil等)
        NSString crash (字符串操作的crash)
        Bad Access crash (野指针)
        UI not on Main Thread Crash (非主线程刷UI (机制待改善))

    图 1:

    图 2:

     

    谢谢!!!

    本账号主要分享我成长过程中的各种心得感悟,包括技术总结, iOS、Swift 和 Mac 相关技术文章、工具资源、参与技术讨论,整理开发技巧、让学习成为一种享受!

    展开全文
  • 本文主要介绍如何在Swift项目中使用OC的文件以及在OC项目中使用Swift文件。
  • swift 3, swift2

    2016-12-21 12:18:58
    Swift3:DispatchQueue.main.async(execute: { }) Swift2: dispatch_async(dispatch_get_main_queue(), { }) TimeInterval–swift3 NSTimeInterval–swift2fileprivate-swift3 private-swift2D
  • Swift入门》关于Swift

    千次阅读 2016-04-05 19:44:41
    Swift 结合了 C 和 Objective-C 的优点并且不受C兼容性的限制。Swift 使用安全的编程模式并添加了很多新特性,这将使编程更简单,扩展性更强,也更有趣。Swift 是使用基于安全、性能和软件设计模式的现代方法生成的...
  • Swift_3.0 相对于 Swift_2.2 版本发生了哪些的变化。本文件将以最直观的代码对比以及文字分析阐述。
  • Swift整形

    千次阅读 2016-09-06 20:21:00
    Swift整形
  • Swift - Swift生成随机数

    千次阅读 2015-05-10 20:38:59
    Swift生成随机数
  • Swift2.3适配Swift3.0

    千次阅读 2016-09-30 16:40:43
    升级Xcode8.0Beta版,看着公司Swift版本的项目200多个报红,那种酸爽也就苹果能给。慢慢改吧!改的东西很多,但基本都不难,记录几个花费较长时间的Bug。 NO.1【报错】“Use Legacy Swift Language Version” (SWIFT...
  • Swift学习笔记 - Swift属性只读

    千次阅读 2016-10-30 19:51:47
    在OC中我们经常用到只读属性,用readonly修饰一下就行了,但在Swift中已经不是这样修饰的了,下面记录一下Swift中只读属性的使用 在OC中的只读://只读属性 @property(readonly, nonatomic) NSObject *wcl;在Swift中...
  • SwiftUI 声明每个平台上应用程序的用户界面和行为。 一、总览 SwiftUI提供了用于声明应用程序用户界面的视图,控件和布局结构。该框架提供事件处理程序,用于向您的应用程序传递敲击,手势和其他类型的输入,并提供...
  • Swift 3 and Swift 2.3 change

    2016-10-06 22:22:00
    One case:when swift 3 to swift 2.3, just remove “_” before parameter, correspondingly when swift 2.3 to swift 3, just add “_” before parameter, Example: Swift3: typealias ...
  • Swift项目

    2017-04-01 11:22:33
    初步准备写一个Swift项目,尽量完整。包括Swift项目的一般框架、Swift的常用语法以及Swift控件的使用等。 代码下载请戳这里 目前代码还在不断更新中!
  • swift基础视频教程

    千人学习 2015-12-30 16:14:11
    Swift,苹果于2014年苹果开发者大会发布的新开发语言,可与Objective-C共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。 Swift是一款易学易用的编程语言,而且它还是第一套具有与脚本语言同样的表现力...
  • Swift简介

    千次阅读 2018-05-23 20:51:35
    Swift可以解决什么问题1.数据持久性:用户数据存储到系统中丢失的可能性。为了防止数据丢失,Swift采用了冗余Replica(副本)的处理方法。Replica的默认值是3.2.对称性是指Swift架构设计上,每个服务器的功能和作用...
  • oc与swift混编,OC调用swiftswift调用OC
  • Swift Bool

    千次阅读 2016-09-20 14:49:57
    Swift有一个基本布尔类型,叫做(Bool)Swift有两个布尔常量:true 和false swift的Bool和OC的BOOL有写不一样 swift 必须给bool赋值才能进行判断 如: var appleAndpear:Bool if appleAndpear {   print...
  • 老镇讲堂-Swift动画编程指南

    万人学习 2015-05-25 11:39:45
    掌握Swift动画编程
  • 使用Toolchains 在 Xcode 中切换Swift 版本 安装Xcode11.4后,新 Xcode只包含最新版本的 Swift5.2。但通常我们的代码或第三方库还来不及匹配,或者我们想看看新的特性在新旧版本之间的区别,这时候就比较蓝瘦。 苹果...
  • 不知道大家有没有发现,在一个 Objective-C 和 Swift 混编的 App 中,当把一个 OC 中的参数转到 Swift 时,Swift 会自动把这个变量进行强制解包。举个例子,我在 OC 中定义这样一个变量:@property (nonatomic, copy...
  • Swift Swift和OC混编

    千次阅读 2016-05-02 16:31:03
    接触Swift有一段时间了,但是一直没有试过混合编程。难得的五一小长假,就有空简单的谢谢Swift和OC的混合编程的Demo。1.新建一个空的Swift项目 注意语言选择Swift。2.新建一个OC的控制器 注意语言选择OC。3.这一步...
  • 该文章翻译自apple官方文档:The Swift Programming Language(Swift 4.1) A Swift Tour -- 一个Swift 旅行 Tradition suggests that the first program in a new language should print the words “Hello, world!...
  • swift集合

    千次阅读 2017-03-07 17:31:54
    swift的集合与数组比较相近,最大的区别在于集合无序,并且所含有的元素不能重复1、集合的定义//集合定义 var skillsOfA:Set<String> = ["swift","OC"] //集合是无序的,会自动删除重复的元素值 var skillsOfB:Set...
  • 首先来说一些Swift中的Optional,译为可选项,他是一个枚举类型,有以下两个值 1. none:表示没有值 2. some:某一类值 原始可选项的定义: let x: Optional = 1011 简单的定义: //'?'用来定义 y 是一个可选的 Int ...
  • 每当看到新的编程语言我总是会有相当大的兴趣,是的,Swift 3是一门『新语言』,因为它看起来,怎么都不像过往的 Swift。打开一个老的项目时,发现满目疮痍,基本上能标红的代码全被标红了。先来个截图提提神: 图...
  • Swift 势必取代 Python?

    万次阅读 多人点赞 2019-05-30 10:55:54
    @开发者,如果你正在研究深度学习,那么建议你开始学习Swift语言。 作者 |Max Pechyonkin 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: 当程序员听到Swift时,可能都会联想到iOS或MacOS...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,861
精华内容 47,544
关键字:

swift