大熊猫猪侯佩 (︶^︶)

hopy是一只贪吃贪睡爱鹅鹅的大熊猫猪

Swift:Foundation框架中的NS前缀的由来

可能大家对于著名的NS前缀的由来有一些疑问.绝大多数这些NS前缀的类是NeXTSTEP操作系统中Foundation框架里的一部分,而该操作系统是OS X的基础.NeXTSTEP的程序员对它们的类和函数使用NX前缀.这个前缀在NeXT和Sun合作创建OpenStep之后被改为NS,OpenStep...

2016-07-31 08:45:05

阅读数:1284

评论数:1

Swift中关于任意类型的数组

在Objc中你是不可以把一个非对象类型放入数组的,你必须将其”封箱”,然后再放入数组. 在Swift中你可将非对象类型轻松放入数组: let ary = [1,2,3] 你可以明确指定元素类型: let ary:[Int] = [1,2,3] 不过你不可以在一个数组中包括不同类型的元素,...

2016-07-29 14:54:55

阅读数:3006

评论数:0

Swift:消除Null值

由于在现代编程语言中这个无所不在的概念,许多程序猿可能倾向于相信null值是一个必须存在的瑕疵,创建一个没有它的编程语言是不可能的.他们可能会惊奇那些许多没有null值活的也很好的语言,这带来的结果就是,null绝不是编程语言中的必要组成部分!比如说函数型的编程语言Haskell就没有null值....

2016-07-28 15:35:33

阅读数:1854

评论数:0

Swift中的可选协议和方法的历史渊源

@objc protocol Transaction { func commit() -> Bool optional func isComplete() -> Bool }以上协议被标示为@objc属性,使得它兼容Objective-c代码.如果协议拥有可选的协议...

2016-07-25 07:46:28

阅读数:1091

评论数:0

Swift类型推测在可选调用中的小提示

我们知道Swift中协议里也有对应于Objc中的可选方法或计算属性,当然协议必须以@objc伪指令修饰否则不可以哦.如下示例:@objc protocol Transaction{ fun commit()->Bool optional fun isComplete()-&g...

2016-07-24 10:47:40

阅读数:783

评论数:0

Swift按照数组元素出现的次数及大小排序

要求如下:1、已知一个数组,按照单个元素在数组中出现的次数作为重新排序的依据,个数多的排在前面 2、相同个数时候,元素值大的排前面例子:[1, 2, 2, 3, 5, 5] 经过计算得到的结果是: [5, 5, 2, 2, 3, 1]一种解决方法是:import UIKitextension Se...

2016-07-21 12:05:37

阅读数:2065

评论数:0

Swift3中如何为Array写一个限定Type的扩展

我们知道Swift可以扩展已存在的类或结构,这些类或结构可以存在于标准库(或称为核心库)中.如果结构是一个集合类型(比如Array)就更有趣了.我们想尝试写一个限定Type数组的扩展,So我们就拿Array为例吧. 本猫想是不是可以这么写: extension Array{ //......

2016-07-21 09:25:14

阅读数:2816

评论数:0

Thread Pools

许多程序会动态创建数十个设置上百个线程.举个例子,一个web服务器可能在每一个新到来的请求时创建一个新线程,然后在请求完成后将其终止. 然而,创建一个新线程将会带来一定的耗费:它需要在内核中创建自身必要的数据结构(并且最终销毁),它需要一定时间来设置这些数据结构. 虽然内核对于创建一个新线程已...

2016-07-20 18:16:11

阅读数:2080

评论数:0

Swift3的playground中对UI直接测试支持的改变

我们知道在Xcode的playground中不仅可以测试console代码,还可以测试UI代码,甚至我们可以测试SpriteKit中的场景,有兴趣的童鞋可以看我之前写的这一篇blog:Xcode的playground中对于SpriteKit物理对象的更新为何无效而在本篇中我们只是简单聊一聊最新的X...

2016-07-19 18:08:16

阅读数:4307

评论数:0

KVO and Swift

不像Objective-c中的类,Swift类对于KVO并没有原生的支持,不过你可以在类型安全的前提下使用属性观察者轻松的完成相同的目标. 不管如何,从NSObject类派生出的类是支持KVO的,如果你想在不使用属性观察者的情况下使用KVO,你只要从NSObject类中继承你的类. 不幸的是,...

2016-07-18 09:55:25

阅读数:1722

评论数:0

MacOS和iOS开发中异步调用与多线程的区别

很多童鞋可能对Apple开发中的异步调用和多线程的区别不是太清楚,这里本猫将用一些简单的示例来展示一下它们到底直观上有神马不同. 首先异步调用可以在同一个线程中,也可以在多个不同的线程中.每个线程都有一个run loop,主线程的运行环称为main run loop,所有和UI界面有关的操作必须...

2016-07-18 08:58:25

阅读数:1798

评论数:1

Xcode Organizational Identifiers

操作系统(不管是iOS或是OS X)使用bundle标识去唯一标识你的应用.Bundle标识由一个组织id和你App的名字组成. 一般的,组织id是你域名的反转.如果你的域名是example.com那么你的组织id将会是com.example,并且你的MyApp的bundle标识将会是com.e...

2016-07-17 07:59:18

阅读数:2235

评论数:0

Swift:Minimizing Annotation with Type Inference

许多程序猿更喜欢比如Python和Javascript这样的动态语言,因为这些语言并不要求程序猿为每个变量声明和管理它们的类型. 在大多数动态类型的语言里,变量可以是任何类型,而类型声明是可选的或者根本不允许. Objective-C采用了混合的处理方式:它需要类型声明,但是任何指向一个Obj...

2016-07-16 10:26:55

阅读数:1304

评论数:0

Objective-C's Init Method

初始化器在其他面向对象的语言中(比如Java)指的是构造器. Objective-C同样拥有对象构造器在init形式的方法中.不管如何,在Objc中这些方法没有什么特殊的行为. 按照惯例,程序猿在init方法中设置对象初始的状态,但是实际上它们和其他的Objc方法一样. 因为它们像任何其他的...

2016-07-15 08:59:32

阅读数:1679

评论数:0

Swift中的"可溢出"算术运算符

大家知道Swift中拥有和C,Objc类似的算术运算符,它们分别是: + - * / % 但是你可能不知道这些Swift中的运算符和C,Objc语言中的有一个很大的不同之处,就是它们不可以被”溢出”,无论是上溢还是下溢! 在C之类的较低级语言中,如果对可能发生溢出的算术数值做算术运算...

2016-07-13 10:29:01

阅读数:1791

评论数:0

Swift类中如何创建一个对外只读对内可读写的属性

很简单用private修饰符,后面跟限制关键字set: class Day{ private(set) var rawValue:Int = 0 func showRawValue(){ print("raw is \(rawValue)")...

2016-07-12 10:11:41

阅读数:5066

评论数:0

Cocos2D-ObjC:在RPG游戏中混合Swift代码

我之前写过一个RPG游戏<<熊猫之魂 SoulOfPanda>>编译器使用的是SpriteBuilder,很好很强大!全部代码都由Objc完成,现在想尝试一下在其中混入Swift代码.我的目的很简单,用Swift写一个GCMan9类,派生自Objc中的GameCharact...

2016-07-09 08:16:07

阅读数:1990

评论数:0

SceneKit一个3D场景角色的代码重构

SuperSpaceMan3D是一个以SceneKit为基础的小游戏项目,作者展示了用SceneKit开发3D游戏的强大威力.不过在实际运行时会发现有一些小bug,这里我们依次尝试将其修复首先,当spaceman接触到敌人的时候,游戏结束,弹出GameOver视图,然后当玩家再触摸屏幕时,开始新的...

2016-07-08 13:29:26

阅读数:2123

评论数:0

Swift3中方法可变参数语法的一些改变

我们知道在Swift2中,默认情况下方法的参数是let值,也就是不可改变的.不过我们可以在参数前添加var关键字改变其不变性:func foo(var i:Int){ i += 1 print(i) }不过遗憾的是在Swift2.x+中,已经明确表明方法参数的修饰关键字var将会在...

2016-07-04 08:45:51

阅读数:5518

评论数:0

Swift3中方法可变参数语法的一些改变

我们知道在Swift2中,默认情况下方法的参数是let值,也就是不可改变的.不过我们可以在参数前添加var关键字改变其不变性:func foo(var i:Int){ i += 1 print(i) }不过遗憾的是在Swift2.x+中,已经明确表明方法参数的修饰关键字var将会在...

2016-07-04 08:45:23

阅读数:673

评论数:0

提示
确定要删除当前文章?
取消 删除