iOS Swift的一些小知识(不断补充)

1. 在swift文件里是不能写c语言函数的,不兼容c,直接报错。想调用c语言函数,就要利用系统提供的桥接功能,就如同swfit中调用oc一样!

2.swift 2.0后提供了@convention(c) 用来把 swift的闭包函数转化成c语言指针。下面这种情况就会用到这个特性,

我们在c语言文件里,定义了一个函数:

CGFloat myCFunction(CGFloat (callback)(CGFloat x, CGFloat y)) {
    return callback(1.1, 2.2);
}

这里的callback函数是一个c语言函数指针,我们在swift里可以这样使用:

let swiftCallback : @convention(c) (CGFloat, CGFloat) -> CGFloat = {
    (x, y) -> CGFloat in
    return x + y
} 

let result = myCFunction( swiftCallback )

也有如下的简化的方法:

let result = myCFunction( {
    (x, y) -> CGFloat in
    return x + y
} )
时间: 2024-10-27 00:31:14

iOS Swift的一些小知识(不断补充)的相关文章

小知识不断补充

1.java.android中获取当前时间 this.sdf = new SimpleDateFormat("yyyy/MM/dd-hh:mm:ss", Locale.CHINA);        String time = sdf.format(new Date(System.currentTimeMillis())); 小知识不断补充,布布扣,bubuko.com

xcode 发展史 及 做iOS 必须知道的小知识

Xcode 3.0 是开发人员建立 Mac OS X 应用程序的最快捷方式,也是利用新的苹果电脑公司技术的最简单的途径.Xcode 3.0 将Mac OS X的轻松使用,UNIX 能量以及高性能的开发技术集合在一起. 从Xcode 3.1开始,Xcode也可被用为iPhone OS的开发环境.2008年11月24日,苹果已经删除了XCode 3.1.2以前的版本.2010年9月10日,Mac OS X v10.6 (版本 3.2及4.0). Xcode 4.0于2011年3月9日正式发行.该版本

iOS Salesforce Hybrid SDK 小知识

关键点总结: SFSmartStore 中的 - (id) initWithName:(NSString*)name user:(SFUserAccount *)user isGlobal:(BOOL)isGlobal 函数,是关键入口点函数. SFSmartStore 中默认是 FMDB 和 SQLChiper都引入了,所以FMDB可以调用setKey函数对数据库进行加密操作,如果不指定默认的_encryptionKeyBlock(返回一个key),就会使用com.salesforce.sma

iOS一些基本的小知识

1.为什么在ARC模式下NSString使用copy而不使用strong来修饰? 答:NSMutableString* mstr ; 如果用NSstring* str=[mstr strong],此时代表str和mstr指向同一个对象,若改变mstr?的值,str的值也会跟着改变,而str为不可变字符串,这就相违背了.用copy修饰则不会出现这种问题. 2.告别32位基本类型 使用NSInterger -> Int, CGFloat -> float等等. 3.使用新版本的枚举,因为系统会在写

yii2使用小知识(连续补充)

打印ar或者query的原始sql: $query = (new \yii\db\Query()) ->select(['a.username','b.item_name']) ->from(['a' => 'user']) ->leftJoin(['b' => 'auth_assignment'], 'a.id = b.user_id') ->where(['a.username' => 'admin']) ->andWhere(['between', '

iOS开发之oc(八)--小知识补充 init方法补充

小知识补充 一. id 1. 简介 万能指针,能指向任何OC对象,相当于NSObject * id类型的定义 typedef struct objc_object { Class isa; } *id; 2. 使用 // 注意:id后面不要加上* id p = [Person new]; 3. 局限性 调用一个不存在的方法,编译器会马上报错 二. .h和.m文件的抽取 1)每个类分布在不同文件中 2)类的声明放在.h文件,类的实现放在.m文件 3)若想使用某个类,就包含某个类的.h声明文件 三.

ios开发小知识2

http://blog.sina.com.cn/s/blog_66450b500102vadq.html http://www.cnblogs.com/lovesmile/archive/2012/06/27/2565569.html ios开发小知识2(转自cc) 退回输入键盘  - (BOOL)textFieldShouldReturn:(id)textField{    [textField resignFirstResponder];} CGRectCGRect frame = CGRe

iOS 小知识-tips

--->1<--- arc的项目中使用非arc代码,则添加-fno-objc-arc: 非arc项目中使用arc代码,则添加-fobjc-arc. --->2<--- 实用的类 NSKeyedArchiver [UIScreen mainScreen] [UIDevice currentDevice] [UIFont familyNames] [UIApplication sharedApplication] [NSUserDefaults standardUserDefaults

Linux 小知识翻译 - 「RAID」

最近术语「RAID」变得比较有名.「RAID」是指将多个HDD组合起来使用,从而提高存储可靠性的一种技术. 那么,关于 RAID 中的 「RAID 0」「RAID 1」「RAID 5」等各种「RAID」都有了解吗? RAID中最容易理解的应该是「RAID 1」(镜像)吧.所谓镜像(「RAID」),就是将同样的内容写入多台设备中,即使一台设备故障了,但只要还有一台设备是好的,就不用担心数据丢失. RAID 从「RAID 0」开始,到「RAID 6」为止,总共分为7类. 除了之前说的「RAID 1」