第一个应用程序
2017-10-16 本文已影响0人
Latte_Bear
-
第一个应用程序
第一个应用程序
1.@UIApplicationMain
就是程序的入口,Swift取消了main
函数;
2. 只有一个 ".swift" 文件,没有 “.h” 和 “.m” 文件,默认为全局共享;
3. 所有的代码,都包装在 "{}"里面,默认方法都有一个缩进。 -
Objective-C 与 Swift 代码比较
- Swift
class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // 创建一个视图 let v = UIView(frame: CGRect(x: 0, y: 20, width: 100, height:100)) // 设置背景颜色 v.backgroundColor = UIColor.red // 添加到当前视图 view.addSubview(v) // 创建一个按钮 let btn = UIButton(type: .contactAdd) // 将按钮添加到红色视图 v.addSubview(btn) // 给按钮添加点击事件 btn.addTarget(self, action: #selector(clickMe), for: .touchUpInside) } fun clickMe() -> () { print(#function) print("这里可以打印东西") } }
- Objective-C
@interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 创建一个视图 UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 100, 100)]; // 设置视图的背景颜色 v.backgroundColor = [UIColor redColor]; // 将视图添加到当前视图 [self.view addSubview:v]; // 创建一个按钮 UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd]; //将按钮添加到红色视图 [v addSubview:btn]; // 给按钮添加点击事件 [btn addTarget:self action:@selector(clickMe) forControlEvents:UIControlEventTouchUpInside]; } - (void)clickMe { NSLog(@"%s", __FUNCTION__); NSLog(@"这里可以打印东西"); } @end
-
代码效果展示
视图效果展示
Swift打印效果展示
Objective-C打印效果展示
- Swift
-
总结
- 实例方法:
[[UIView alloc] initWithXXX];
等价于UIView(XXX)
; - 类方法:
[UIColor redColor];
等价于UIColor.red
,Swift3.0及早期版本写法为UIColor.red()
,其中 "()" 表示执行; - 访问当前对象的属性,"
self.
"可用可不用(原因:闭包会使用到self.
),官方建议都不用self.
,在编译器提示的时候再添加会对语境有更好的体会。 - 在Swift中默认语句的结尾不需要分号(“;”).
- 枚举(
struct
)类型- Objective-C:
UIButtonTypeContactAdd
- Swift:
.contactAdd
- Objective-C:
- 监听方法
- Objective-C:@selector
- Swift:#selector,如果需要传参不需要添加“:”
Swift2.0的时候不需要关键字,写法为btn.addTarget(self, action: "clickMe", for: .touchUpInside)
- 调试
-
Objective-C:
有时间信息并且精确到具体毫秒,效率很低,占用内存比较大;
跟踪方法的函数为 ____FUNCTION_____ -
Swift:
没有时间信息,相较于
Objective-C
效率更高。
跟踪方法的函数Swift3.0之后改成#function
3.0之前与Objective-C一样,官方文档未给出改变原因
-