swift-31加载百度

我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.

image.png
import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        loadBaidu()
    }

    func loadBaidu() {
        let p = Person(name: "老王", age: 99)
        print(p?.name)
        
        
        //URL 的构造函数可以返回nil
        //构造函数就是实例化对象的
        //init?(string: String)
        
        let url = URL(string: "http://www.baidu.com/")
        
        //发起网络请求
        //- 与oc的区别 闭包的所有参数 需要自己写 oc是直接带入
        //- 如果不关心的值 可以直接 '_' 忽略
        URLSession.shared.dataTask(with: url!) { (data, _, error) in
//            if error != nil {
//                print("网络请求失败")
//                return
//            }
            guard let data = data else {
                print("网络请求失败 \(String(describing: error))")
                return
            }
            
            // 将data 转换为String
            let html = String(data: data, encoding: .utf8)
            print(html)
            
        }.resume()
        
    }

}
image.png
import UIKit

class Person: NSObject {
    var name: String?
    var age: Int = 0
    
    //便利构造函数
    /**
     1遍历构造函数允许返回 nil
        -正常的构造函数一定会创建对象
    *** - 判断给定的参数时候符合条件 如果不符合条件 直接返回nil 不会创建对象 减少内存开销 
     2**只有** 遍历构造函数中使用 'self.init' 构造当前对象
        -没有 convenience 关键字的构造函数是负责创建对象的 反之用来检查条件的 本身不负责对象的创建 
     3如果要在遍历构造函数中使用 当前对象的属性 一定要在 self.init 之后
     */
    
    /**
     便利构造函数
     目的
        条件判断 只有满足条件 才实例化条件 可以防止造成不必要的内存开销
        简化对象的创建
        本身不负责属性的创建和初始化构造
     
     特点
        默认情况下 所有的构造方法都是指定构造函数 Designted
        convenience 关键字修饰的构造方法就是便利构造函数
        便利构造函数具有以下特点:
            1可以返回 nil
            2只有便利构造函数中可以调用 self.init()
            3便利构造函数不能被 重写 或者 super
            4便利构造函数主要用于条件检测 或者 简化对象创建(分类常见控件, 内部设置好UI控件的属性, 如frame, color, fontsize)
     */
    convenience init?(name: String, age: Int) {
//        self.init()
        if age > 100  {
            return nil
        }
        //Use of 'self' in property access 'name' before self.init initializes self
//        self.name = name
        
        
        self.init()
        
        //执行到此 self 才允许被访问 才能够访问到对象的属性
        self.name = name
        self.age = age
    
    }

}

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 10,194评论 4 57
  • 毕业几年后,总是会聊到一个话题:父母和原生家庭对人的影响,唏嘘感慨遗憾羡慕都在其中。 对于大部分人来说,成长这个词...
    宇宙八卦中心阅读 332评论 2 3
  • 春天,十个海子 春天,十个海子全部复活 在光明的景色中 嘲笑这一个野蛮而悲伤的海子 你这么长久地沉...
    叶宁而远阅读 195评论 2 1
  • 深山藏古墓,石碑赛大树。 树怪似魔爪,森然碑旁立。 借问守墓人,大龟托阿谁? 墓人喜客至,欣然解吾问。
    殷七七阅读 262评论 1 0
  • 广州这几天进入了春夏秋冬自由切换模式,不过大街上的妹纸们都不惧严寒和酷暑,管你什么模式,都短裤、裙子出门,我就是要...
    米娅C阅读 719评论 0 0