swift学习中与Objective-C的差异

前端之家收集整理的这篇文章主要介绍了swift学习中与Objective-C的差异前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Objective-C中的很多知识点到了swift中都有了很大的改变,使得swift学习,或研发过程中有很多不适。@H_403_2@

现在就将遇到过的差异列举出来(后续会不断进行完善)。@H_403_2@


@H_403_2@

注意:@H_403_2@@H_403_2@

1、Objective-C工程中类文件有两个xxx.h文件,xxx.m文件,两者是配套出现的。@H_403_2@@H_403_2@

2、swift工程中类文件只有一个xxx.swift文件。@H_403_2@@H_403_2@


1、打印调试命令@H_403_2@

Objective-C格式为:@H_403_2@NSLog(@".....%@...",@H_403_2@variable@H_403_2@)@H_403_2@

swift格式为:print("...\(variable)....")@H_403_2@


@H_403_2@

2、格式分隔@H_403_2@

Objective-C格式为:#pragma mark - XXX@H_403_2@

swift格式为:// MARK: - XXX(注意:没有 - 符号时,不会有分隔线)@H_403_2@

另外 // FIXME: - xxx 表示需要修复的异常代码;// TODO: - xxx 表示需要继续完成的代码@H_403_2@


@H_403_2@

3、函数定义@H_403_2@

Objective-C格式为:@H_403_2@

@H_403_2@

- (void)click:(UIButton *)button
{
...
}

- (NSString *)click:(UIButton *)button
{
...
return xxx;
}

- (void)click
{
...
}
swift格式为(注意:使用关键字 func@H_403_2@):

@H_403_2@

fun click(button:UIButton) -> Void
{
...
}

func click(button:UIButton,title:String) -> String
{
...
return xxx;
}

func click()
{
...
}


@H_403_2@

4、参数字义

swift中定义参数,使用关键字let,或var。使用let定义的为常量,且定义后不能修改值;而使用var定义的为变量,可以修改值。@H_403_2@

let name = "DevZhang"
let name:String = "DevZhang"

var name = "DevZhang"
name = "iOS DevZhang"

另外swfit中定义类对象时,不再使用符号*。@H_403_2@

@H_403_2@

// Objective-C
UIView *view = [[UIView alloc] init];
// swift
let view = UIView(frame: CGRectMake(10.0,10.0,200.0,200.0))


@H_403_2@

5、分号;的使用差异@H_403_2@

Objective-C中,每个单独语句都需要以分号;来结束@H_403_2@

swift中,每个单独语句,可用可不用分号;来结束,系统会做处理@H_403_2@


6、布尔值定义@H_403_2@

Objective-C中格式为:真为YES,或1;假为NO,或0@H_403_2@

swift中格式为:真为true,假为false@H_403_2@


7、文件的引用@H_403_2@

Objective-C中引用格式为:#import <UIKit/UIKit.h>@H_403_2@

swift中引用格式为:import UIKit@H_403_2@


@H_403_2@

8、任意类型@H_403_2@

Objective-C中的任意类型为:id,即 id object = xxxx@H_403_2@

swift中的任意类型为:Any,或AnyObject,其中Any包括方法Selector,而AnyObject不包含方法Selector@H_403_2@

猜你在找的Swift相关文章