为毛这几个init没有实现??

[复制链接]
223 4
class UIImage : NSObject, NSSecureCoding, NSCoding {

init?(named name: String) -> UIImage // load from main bundle
init?(named name: String, inBundle bundle: NSBundle?, compatibleWithTraitCollection traitCollection: UITraitCollection?) -> UIImage

init?(contentsOfFile path: String)
init?(data: NSData)
@availability(iOS, introduced=6.0)
init?(data: NSData, scale: CGFloat)
init?(CGImage cgImage: CGImage!)
@availability(iOS, introduced=4.0)
init?(CGImage cgImage: CGImage!, scale: CGFloat, orientation: UIImageOrientation)
@availability(iOS, introduced=5.0)
init?(CIImage ciImage: CIImage)
@availability(iOS, introduced=6.0)
init?(CIImage ciImage: CIImage, scale: CGFloat, orientation: UIImageOrientation)

var size: CGSize { get } // reflects orientation

两个问题:
1:为什么这个类里的init 没有函数体呢?
2:init后面加个? 号代表什么?返回值可能为nil吗?

举报 使用道具

回复

4 个评论

admin  管理员  发表于 2019-2-4 07:23:29  | 显示全部楼层
class UIImage : NSObject, NSSecureCoding, NSCoding {
   
    init?(named name: String) -> UIImage // load from main bundle
    init?(named name: String, inBundle bundle: NSBundle?, compatibleWithTraitCollection traitCollection: UITraitCollection?) -> UIImage
   
    init?(contentsOfFile path: String)
    init?(data: NSData)
    @availability(iOS, introduced=6.0)
    init?(data: NSData, scale: CGFloat)
    init?(CGImage cgImage: CGImage!)
    @availability(iOS, introduced=4.0)
    init?(CGImage cgImage: CGImage!, scale: CGFloat, orientation: UIImageOrientation)
    @availability(iOS, introduced=5.0)
    init?(CIImage ciImage: CIImage)
    @availability(iOS, introduced=6.0)
    init?(CIImage ciImage: CIImage, scale: CGFloat, orientation: UIImageOrientation)
   
    var size: CGSize { get } // reflects orientation

两个问题:
1:为什么这个类里的init 没有函数体呢?
2:init后面加个? 号代表什么?返回值可能为nil吗?

举报 使用道具

回复
BatikPag  新手上路  发表于 2019-2-4 08:06:39  | 显示全部楼层
init?:代表初始化函数可能失败,即返回nil;

举报 使用道具

回复
lemonlime  新手上路  发表于 2019-2-4 08:15:50  | 显示全部楼层
1楼正解。有时候定义一个构造器可以失败的类,结构体或枚举是很有用的。这样的失败可能被非法的初始化参数,所需外部资源的缺失或一些其他阻止初始化成功的情况触发

举报 使用道具

回复
NasomaEdilm  新手上路  发表于 2019-2-4 09:19:34  | 显示全部楼层
ios又不是开源的,你当然看不到函数体了

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

ios.irunthink.com
搜索
热搜: iOS swift 下拉刷新

图文热点

更多

开发教程

更多

客服中心

400-800 周一至周日 9:30-17:30 仅收市话费

关注我们

  • 微信扫描
  • 关注微信
关于我们
关于我们
友情链接
联系我们
帮助中心
精贴推荐
源码上传
注册登录
服务支持
资源下载
关注我们
官方微博
官方空间
快速回复 返回顶部 返回列表