2016ios app就可以完全使用swiftios开发swift了没

Posts - 34,
Articles - 0,
Comments - 1620
CODING 完美世界...
18:49 by KenshinCui, ... 阅读,
从写第一篇Swift文章的时候到现在Swift已经从1.2发展到了今天的3.0,这期间由于Swift目前还在发展阶段并不能向下兼容,因此第一篇文章中的部分代码在当前的Xcode环境中已经无法运行。在WWDC16上Apple公布了Swift3.0,从中可以看出Apple对Swift的重视,以及Swift开源半年以来的进步。尽管对于开发人员来说Swift3.0的变化会令你的程序几乎处处报错,但是试想一下如果Apple没有追求极致的精神又怎么会做出如此多的更改。今天的文章将重点介绍:What's new in Swift 3.0?从Swift编译器和标准库两个方面来说明从Swift3.0的变化。
编译器和语法变化
函数或方法参数
调用函数或方法时从第一个参数开始就必须指定参数名
在Swift的历史版本中出现过在调用函数时不需要指定任何函数参数(或者从第二个参数开始指定参数名),在调用方法时则必须从第二个参数开始必须指定参数名等多种情况,而在Swift3.0中不管是函数还是方法都必须从第一个参数开始必须指定参数名(当然可以使用“_”明确指出调用时省略参数)。
// 从第一个参数就必须指定参数名,除非使用&_&明确指出省略参数
func sum(num1:Int,num2:Int)-&Int{
return num1 + num2
sum(num1: 1, num2: 2) // old: sum(1,2)或者sum(1, num2: 2)
取消var参数
//func increase(var a:Int){
// 上面的代码会报错,可改写成
func increase(a:Int){
inout参数修饰改放到类型前
//func increase(inout a:Int) {
// 上面的代码会报错,可改为
func increase( a:inout Int) {
方法返回值
Swift 3.0 中方法的返回值必须有接收否则会报警告,当然其实主要目的是为了避免开发人员忘记接收返回值的情况,但是有些情况下确实不需要使用返回值可以使用&_&接收来忽略返回值。当然你也可以增加@discardableResult声明,告诉编译器此方法可以不用接收返回值。
struct Caculator {
func sum(a:Int,b:Int) -& Int {
return a + b
@discardableResult
func func1(a:Int,b:Int) -&Int {
return a - b + 1
let ca = Caculator()
ca.sum(a: 1, b: 2) // 此处会警告,因为方法有返回值但是没有接收
let _ = ca.sum(a: 1, b: 2) // 使用&_&接收无用返回值
ca.func1(a: 1, b: 2) // 由于func1添加了@discardableResult声明,即使不接收返回值也不会警告
Swift3.0对于可选类型控制更加严谨,隐式可选类型和其他类型的运算之后获得的是可选类型而不是隐式可选类型。
let a:Int! = 1
let b = a + 1 // 此时强制解包,b是Int型
let c = a // 注意此时c是Int? 在之前的Swift版本中c是Int!
Selector的变化
Selector的改变其实从1.0到3.0经历了多次变化,从最早的@Selector(&method:&)到现在的#selector(method(param1:))可以说经历了多次修改,好在它变得越来越好,毕竟字符串操作对于语法检查来说是很无助的。
class MyClass {
@objc func sum(a:Int,b:Int) -& Int {
return a + b
func func1(){
let _ = #selector(sum(a:b:))
// old: Swift 2.2
//class MyClass {
@objc func sum(a:Int,b:Int) -& Int {
return a + b
func func1(){
let _ = #selector(sum(_:b:))
协议中的可选方法
在Swift3.0之前如果要定义协议中可选方法,,,。
@objc protocol MyProtocol {
@objc optional func func1() //old: optional func func1()
func func2()
取消++、--操作符
d++ //报错,可以改写成 d += 1 或者 d = d + 1
取消C风格for循环
//for var i = 0 ;i & 10 ; i += 1 {
debugPrint(i)
// 上面的代码会报错,可改写成如下代码
for i in 0
debugPrint(i)
SDK类库变化
大家都知道Swift诞生在Objective-C已经发展的相当成熟的情况下,为了保证ObjC开发人员顺利过渡到Swift,也因为Swift处于初级阶段,很多类库和方法命名都尽量和ObjC保持一致,在使用Swift开发iOS应用中处处可以看到ObjC的影子。但是作为一门Modern语言Swift还是做出了改变,从中可以看出日后Swift将彻底摆脱ObjC的影子。这其中包括重新导入Foundation消除类型前缀、方法名去重、函数和方法去C风格等等。
// 1.去掉前缀
let url1 = URL(string: &&)
let isFileURL = url1?.isFileURL //old:url1.fileURL ,现在更加注重语意
let data1 = Data() //NSData
// 2.方法名使用动词,其他名词、介词等作为参数或移除
var array1 = [1,2,3]
array1.append(contentsOf: [4,5,6]) // old:array1.appendContentsOf([4,5,6])
array1.remove(at: 0) // old:array1.removeAtIndex(0)
// 3.不引起歧义的情况下尽量消除重复
let color1 = UIColor.red() // old:var color1 = UIColor.redColor()
// 4.枚举成员首字母变成小写
let label1 = UILabel()
label1.textAlignment = .center // old:label1.textAlignment = .Center
// 5.按钮的Normal状态去掉
let btn1 = UIButton()
btn1.setTitle(&hello&, for: UIControlState()) // 相当于Normal状态
Swift发展初期很多类库的引入依然保持的ObjC风格,但是ObjC由于根出C语言,因此很多操作其实并不是对象和方法操作而是C语言的函数形式。到了Swift3.0之后这一现状将发生变化,全局函数将会变成某些类型的方法;某些常量定义将以某个枚举类型的成员来表示。
let rect1 = CGRect(x: 0, y: 0, width: 100, height: 100)
// 下面的代码将要报错,3.0完全废除这种类C的风格
//let rect1 = CGRectMake(0, 0, 100, 100)
if let context1 = UIGraphicsGetCurrentContext() {
CGContext.fillPath(context1) // old:CGContextFillPath(context1!)
// GCD的改变
let queue = DispatchQueue(label: &myqueue&)
queue.async {
debugPrint(&hello world!&)
//let queue = dispatch_queue_create(&myqueue&, nil)
//dispatch_async(queue) {
debugPrint(&hello world!&)
// 相关常量定义被移到枚举内部
NotificationCenter.defaultCenter().addObserver(self, selector: #selector(userDefaultChange()), name: UserDefaults.didChangeNotification, object: nil)
//old:NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(userDefaultChange()), name: NSUserDefaultsDidChangeNotification, object: nil)
集合API的变化
let array1 = [1,2,3]
let next = array1.index(after: 0)
// old:let start = array1.startIndex let next = start.successor()
let first = array1.first { (element) -& Bool in // 增加新的方法
element & 1
let r = Range(0..&3) //old: let _ = NSRange(location: 0, length: 3)
// 下面的代码必须在控制器中执行,用于遍历当前view及其父视图
for subview in sequence(first: self.view, next: { $0?.superview }){
debugPrint(subview)
新的浮点协议
Float、Double、CGFloat使用了新的协议,提供了提供 IEEE-754标准的属性和方法。
let a = 2 * Float.pi // old: let a = 2 * M_PI
let b = 2.0 * .pi // 注意前面是浮点型,后面可以省略Float
当然Swift3.0中还有一些其他的不常用变化,如果感兴趣可以访问
从Swift2.2迁移到Swift3.0
可以看出如果要更新到Swift3.0现有项目需要作出大量修改,经过使用之前开源项目进行测试,区区十个类文件就出现了一百多个错误,不过好在Xcode 8已经提供了很好用的迁移工具(Xcode:Editor - Convert - To Current Swift Syntax),经过迁移工具转化后仅仅发现两处错误需要手动修正。在使用这个工具的时候大家会看到如下界面:
Swift 2.3?没错Swift2.2和Swift 3.0中间还有个Swift 2.3,Apple也解释了什么是Swift 2.3,其实就是Swift 2.2 + New SDKs。之所以如此是因为Xcode 8目前还是beta版,使用Swift 3.0进行开发的应用还不能提交App Store,因此在Swift 2.2基础上使用新的SDK开发还是有存在必要的。
Swift的每次变化由于对之前的版本乃至上一个版本都不兼容造成每次Swift的升级都显得比较虐心,但是事实上这也是Swift的重大进步。记得之前曾有传闻说Swift3.0的语法和API都会稳定并且向上兼容,但是不久这个消息就破灭了,WWDC上官方也再次证实这个希望可能要到4.0才能实现。但是试想一下:Apple在很短的时间内就固话API对于Swift的发展真的是好事吗?毕竟新特性的加入、更好的语法优化才能让Swift越来越好!总的来说,如果应用要升级到Swift3.0可能要做不同程度的修改,但是这种改动仅仅是语法和SDK的变动并不会消耗太多的工作量,更何况Apple提供了迁移工具。IOS swift开发例子源代码(一个简单的新闻APP)-IOS开发经验-ab蓝学网
IOS swift开发例子源代码(一个简单的新闻APP)
简介:IOS开发|1.利用swift开发一个简单的新闻APP主要利用IOS的UITableViewController,和UIwebView,再加上HTTP请求返回json数据并
1.利用swift开发一个简单的新闻APP 主要利用IOS的UITableViewController,和UIwebView,再加上HTTP请求返回json数据并解析 2.APP演示 主界面
点击新闻进入详情
下拉列表刷新
3.APPDelegate.swif
// AppDelegate.swift
// UITableViewControllerDemo
// Created by 赵超 on 14-6-24.
// Copyright (c) 2014年 赵超. All rights reserved.
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -& Bool {
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
// Override point for customization after application launch.
self.window!.backgroundColor = UIColor.whiteColor()
self.window!.makeKeyAndVisible()
var root=RootTableViewController()
var navCtrl=UINavigationController(rootViewController:root)
self.window!.rootViewController=navCtrl
return true
func applicationWillResignActive(application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
func applicationDidEnterBackground(application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
func applicationWillEnterForeground(application: UIApplication) {
// Called as part of the transition from the background t here you can undo many of the changes made on entering the background.
func applicationDidBecomeActive(application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
4.RootTableViewController.swift
// RootTableViewController.swift
// UITableViewControllerDemo
// Created by 赵超 on 14-6-24.
// Copyright (c) 2014年 赵超. All rights reserved.
import UIKit
class RootTableViewController: UITableViewController {
var dataSource = []
var thumbQueue = NSOperationQueue()
let hackerNewsApiUrl = &/api/lists?ntype=%E5%9B%BE%E7%89%87&pageNo=1&pagePer=10&list.htm&
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem
self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: &cell&)
let refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: &下拉刷新&)
refreshControl.addTarget(self, action: &loadDataSource&, forControlEvents: UIControlEvents.ValueChanged)
self.refreshControl = refreshControl
loadDataSource()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
// #pragma mark - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView?) -& Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return dataSource.count
override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -& Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return dataSource.count
func loadDataSource() {
self.refreshControl.beginRefreshing()
var loadURL = NSURL.URLWithString(hackerNewsApiUrl)
var request = NSURLRequest(URL: loadURL)
var loadDataSourceQueue = NSOperationQueue();
NSURLConnection.sendAsynchronousRequest(request, queue: loadDataSourceQueue, completionHandler: { response, data, error in
if error {
println(error)
dispatch_async(dispatch_get_main_queue(), {
self.refreshControl.endRefreshing()
let json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
let newsDataSource = json[&item&] as NSArray
var currentNewsDataSource = NSMutableArray()
for currentNews : AnyObject in newsDataSource {
let newsItem = XHNewsItem()
newsItem.newsTitle = currentNews[&title&] as NSString
newsItem.newsThumb = currentNews[&thumb&] as NSString
newsItem.newsID = currentNews[&id&] as NSString
currentNewsDataSource.addObject(newsItem)
println( newsItem.newsTitle)
dispatch_async(dispatch_get_main_queue(), {
self.dataSource = currentNewsDataSource
self.tableView.reloadData()
self.refreshControl.endRefreshing()
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -& UITableViewCell {
let cell = tableView .dequeueReusableCellWithIdentifier(&cell&, forIndexPath: indexPath) as UITableViewCell
let newsItem = dataSource[indexPath.row] as XHNewsItem
cell.textLabel.text = newsItem.newsTitle
cell.imageView.image = UIImage(named :&cell_photo_default_small&)
cell.imageView.contentMode = UIViewContentMode.ScaleAspectFit
let request = NSURLRequest(URL :NSURL.URLWithString(newsItem.newsThumb))
NSURLConnection.sendAsynchronousRequest(request, queue: thumbQueue, completionHandler: { response, data, error in
if error {
println(error)
let image = UIImage.init(data :data)
dispatch_async(dispatch_get_main_queue(), {
cell.imageView.image = image
return cell
override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -& CGFloat {
// #pragma mark - Segues
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
println(&aa&)
//选择一行
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!){
var row=indexPath.row as Int
var data=self.dataSource[row] as XHNewsItem
var webView=WebViewController()
webView.detailID=data.newsID
//取导航控制器,添加subView
self.navigationController.pushViewController(webView,animated:true)
5.WebViewController.swift
// WebViewController.swift
// UITableViewControllerDemo
// Created by 赵超 on 14-6-24.
// Copyright (c) 2014年 赵超. All rights reserved.
import UIKit
class WebViewController: UIViewController {
var detailID = NSString()
var detailURL = &/api/html/&
var webView : UIWebView?
func loadDataSource() {
var urlString = detailURL + &\(detailID).html&
var url = NSURL.URLWithString(urlString)
var urlRequest = NSURLRequest(URL :NSURL.URLWithString(urlString))
webView!.loadRequest(urlRequest)
override func viewDidLoad() {
super.viewDidLoad()
webView=UIWebView()
webView!.frame=self.view.frame
webView!.backgroundColor=UIColor.grayColor()
self.view.addSubview(webView)
loadDataSource()
// Do any additional setup after loading the view.
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
// #pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue?, sender: AnyObject?) {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
6.XHNewsItem.swift
// XHNewsItem.swift
// UITableViewControllerDemo
// Created by 赵超 on 14-6-24.
// Copyright (c) 2014年 赵超. All rights reserved.
import Foundation
class XHNewsItem {
var newsTitle = NSString()
var newsThumb = NSString()
var newsID = NSString()
上一编:下一编:
喜欢猜你喜欢的内容
大家感兴趣的内容
1 2 3 4 5 6 7 8 9 10
最近更新的内容
1 2 3 4 5 6 7 8 9 10
本月热门的内容
1 2 3 4 5 6 7 8 9 10后使用快捷导航没有帐号?
在手机上看技术干货
查看: 14435|
获取优质的苹果资讯内容
收藏热门的iOS等技术干货
拷贝下载Swift Demo源代码
订阅梳理好了的知识点专辑
首先,谢谢大家一年来对的支持与关注!我们会更好的坚持下去!
,,全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,就是在2014年WWDC发布会宣布Swift语言时注册域名的,已经注册成立公司,目前已经达到访问百万、收入百万的水平,欢迎来洽谈合作,从推荐人才的猎头服务到项目外包,从H5营销到微信公众号开发运营,从iOS / Android App开发到智能硬件开发,联系:。
1、太震撼了!!!
WWDC上,Apple的软件研发副总裁Craig Federighi宣布了这一消息。他还表示Swift将是未来20年Apple应用软件和系统开发的主要语言。
Swift 2.0增加的主要特性包括泛型、更快的调试模式、更快的编译、错误处理机制、C函数指针API、注释里Markdown格式等等。
值得注意的是,Apple宣布Swift不仅支持iOS和OS X,也将支持Linux。接下来,会有Swift on Rails或者Swift.NET出现吗?Swift社区(尤其是)可是相当凶猛的……
另外,据悉,iOS 9的体积从4.6GB降低至1.8GB。
Oh Yeah!!!!
就因为用Swift的原因么??????
请看:《》、
2、开源有啥好处?
开源是个大趋势,大家肯定知道是有好处的,但具体好处,认为有如下几点:
1、Swift是苹果从封闭走向开放的关节点;
2、开源之后,Linux、Windows等平台没理由不欢迎Swift,毕竟这代表着开发者的呼声;
3、从而也意味着Swift工程师可以用Swift开发出不同平台的应用,甚至用Swift开发出一个应用之后、自动适配不同平台(或稍许适配工作),这对整个社会是有贡献的;
4、苹果会发布Sensor零件或标准给各大智能硬件商家,结合各种Kit、各种接入标准,而智能硬件还不如手机性能好,所以必须采用苹果主推的全民第一编程语言Swift;
5、大家都抓紧学习Swift吧,不仅是苹果在2016年会强制要求必须用Swift来开发,整个行业都会如此。
上面的iOS 9体积缩小应该就是Swift的好处的明证之一!
谢谢大家一年来对的支持与关注!我们会更好的坚持下去!
3、更多Swift资料
移步查阅:《》、《》、《》
谢谢大家一年来对的支持与关注!我们会更好的坚持下去!
,,全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,就是在2014年WWDC发布会宣布Swift语言时注册域名的,已经注册成立公司,目前已经达到访问百万、收入百万的水平,欢迎来洽谈合作,从推荐人才的猎头服务到项目外包,从H5营销到微信公众号开发运营,从iOS / Android App开发到智能硬件开发,联系:。
4、Swift开源相关内容
5、淘帖专辑
全球最大的Swift开发者社区 整理的淘帖:
都看到这里了,就把这篇资料推荐给您的好朋友吧,让他们也感受一下。
回帖是一种美德,也是对楼主发帖的尊重和支持。您的赞赏是我前进的方向。
*声明:是全球最大的Swift开发者社区、苹果粉丝家园、智能移动门户,所载内容仅限于传递更多最新信息,并不意味赞同其观点或证实其描述;内容仅供参考,并非绝对正确的建议。本站不对上述信息的真实性、合法性、完整性做出保证;转载请注明来源并加上本站链接,将保留所有法律权益。如有疑问或建议,邮件至。
*联系:微信公众平台:“swifthumb” / 腾讯微博:@ / 新浪微博:@ / 官方QQ一群:(满) / 官方QQ二群: ,需要报上用户名才会被同意进群,请先。
哈哈,爆炸性新闻!swift居然可以用来开发android应用!!!这下学了一门语言,就可以
先感谢群里大神指导,然后在网上搜了一些帖子,实践了利用self.navigationController
太震撼了!!!Swift 2.0 开源!不只iOS、OS X,还支持Windows、Linux等平台上的应用
Block作为C语言的扩展,并不是高新技术,和其他语言的闭包或lambda表达式
最近做了个用户头像圆形显示,用swift方法里的layer.cornerRadius实现的,在oc里这个
广告位招租
商务合作QQ:
都看到这里了,就把这资料推荐给您的好朋友吧,让他们也感受一下。
您的每一位朋友访问此永久链接后,您都将获得相应的。
永久链接:
一个很奇怪的现象:人人往往更加关注别人成功后做的事情,却从不思考别人究竟是怎么
Swift在闭包的使用过程中有可能会引起循环引用,这和OC中的循环引用是类似的。
眼下,人工智能已经成为越来越火的一个方向。普通程序员,如何转向人工智能方向,是
gif图片是博客中展示项目效果的一种很好的方式,为我们的app制作一张gif图片并不复杂
自己闲的时候总是思考一个问题,将来有一天我成为一家创业公司的技术负责人,哪些错
赢取企业订单最行之有效的方法
成立还不到一年,General Assembly(GA)已经走
不知道你有没有订阅我在敏捷大拇指上的淘帖《组建团队 打造班子》,如果没有的话,
互联网知识经济从去年开始兴起,一波又一波的热潮过去,付费内容、知识服务成为了我
活动发生的那周恰逢 Google 退出中国七周年所以我们从 Google 开始聊起,但是最吸引
AVPlayer实现基本的播放,暂停,上一首,下一首,调节音量,调节进度等,正在学习的
在 iOS 开发中,有这样一个场景:某件重要的事情必须立刻让用户知道,甚
如果你是企业服务领域的从业者,那么你肯定听过堪称史上增长最快的SaaS产品:Slack。
谈起手机配置,首先想到的就是当年的华硕Zenfone 2,4GB运行内存成为了当时安卓手机中...
移动支付时代,越来越多的人习惯于不带现金出门,许多支付场景只需要掏出手机就能完
不知道你有没有订阅我在敏捷大拇指的淘帖专辑《监狱风云》?如果你不慎进了监狱,
本系列文章中,我们将尝试再造手机QQ的侧滑菜单,力争最大限度接近手Q的实际效果,并
4月7日晚间消息,锤子科技创始人罗永浩和得到App创始人罗振宇近日通过深度创业访谈《
在谓产品经理这个领域里面,一直是存在两种角色的。一种,我们习惯称之为用户产品
本文作者 Sarah Tavel 是土生土长的纽约人,曾任 Pinterest 的产品经理。文中,Sar
公司处在急速上升期时,会面临很多挑战,亦会犯下一些错误。像 Pinterest 这种顶级
1、啰嗦几句
起初我是想把这个demo做的和原版一摸一样,但在印象笔记的ipa中并没有
在 Swift 所有的特性中,有一件事有时会相当恼人,那就是在用 Swift 编写更大规模的项...
首先,如果你对 GCD 和 Dispatch Queue 不熟悉,请看看AppCoda 的 这篇文章 。
XLPagerTabStrip是一个分页控制器的第三方库(Swift),使用它可以轻松地建立分页控
[SVProgressHUD V2.1.2](/SVProgressHUD/SVProgressHUD)是...
从全球最大的Swift开发者社区敏捷大拇指()获得好消息:《Swift 3.1 发...
有这么一个网站,几乎所有的科技圈大佬都是它的忠实读者,几乎所有的科技媒体从业人员...
不同版本极光推送SDK集成各有差异,集成时一定要注意版本号,楼主已将博文更新成最新
使用Google 按段落翻译(上传文档的不太准),通读一遍后去掉设备或网络的超专业术语
很少有人知道weak表其实是一个hash(哈希)表,Key是所指对象的地址,Value是weak指
几天前,我的朋友圈被《杀死今日头条》刷屏了,这没什么好奇怪的,历史总在重演——B
卫哲,嘉御基金创始人,前阿里巴巴B2B公司CEO,曾经成功投资91无线、PPS、房多多等系
2017年已经注定的是中国中产嗷嗷叫的一年,此时起,“阶级固化”深入骨髓,我们越来越...
Alan Kay是当今世界计算机领域最重要的人物之一,他因面向对象编程方面的贡献和设计S
技术团队的领导总是在发愁怎样带团队,团队的程序员总是会抵触各种团队“文化”、规
1、从一个具体需求说起
应用中有多个页面内的UICollectionViewCell需要实现一个
敏捷大拇指
商务合作QQ:
官方QQ一群:(已满)
官方QQ二群:
官方HR猎头Q群:
官方微信公众号:swifthumb
Swift小苹果
北京治世天下科技有限公司
Powered by

我要回帖

更多关于 swift开发ios应用实例 的文章

 

随机推荐