我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//实例化person
// () 等于 alloc init
// swift 中对应一个函数的 init() 构造函数
// 作用: 给成员变量分配空间 初始化成员变量
// let p = Person()
// print(p.name)
let s = Student()
print("\(s.no) ~~~~ \(s.name)")
}
}
import UIKit
/**
必须属性的构造过程: 重写构造函数中, 先给自己舒心分配空间并且设置初始值, 再调用父类的 构造函数
1给自己的属性分配空间并且设置初始值
2调用父类的'构造函数', 给父类的属性分配空间设置初始值
NSObject 没有属性 只有一个成员变量 isa
*/
class Person: NSObject {
var name: String
//1Class 'Person' has no initializers 类Person 没有初始化器s 可以有多个 默认的是init
//2override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
//3Property 'self.name' not initialized at implicitly generated super.init call
//implicitly(隐式生成的 super.init) 调用父类的构造函数之前 属性self.name 没有被初始化
override init() {
//4 Property 'self.name' not initialized at super.init call
//提示给 self.name 初始化 -> 分配空间 设置初始值!
print("Person init")
name = "zhang"
super.init()
// name = "li"
}
/**
override 重写: 父类有这个方法 子类重新编写父类方法的实现 需要override 关键字
父类方法满足不了子类的需求 , 重写来扩展需求
*/
}
import UIKit
class Student: Person {
var no: String
override init() {
print("student init")
no = "001"
super.init()
}
}
#import "Book.h"
@interface Book()
@property (nonatomic, copy) NSString *bookName;
@end
@implementation Book
- (instancetype)init
{
self = [super init];
if (self) {
_bookName = @"iPhone";
}
return self;
}
@end