网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月04日漏签0天
swift吧 关注:40,519贴子:75,416
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 16回复贴,共1页
<<返回swift吧
>0< 加载中...

Swift原理 长坑

  • 只看楼主
  • 收藏

  • 回复
  • 秋色夏影
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里不说太多语法方面的东西,也不提cocoa。
var和let
了解OC的人可能知道,var和let都是堆上的一个对象,它们在作用域的末尾被ARC释放。你说它们都是OC中的指针吗?它们可以直接传给OC写的函数,显然它们是,或者至少能隐式的转换成一个指针。你也可以把它们传给一个UnsafePointer类型,显然它们就是一个指针了。(你可以用这种办法获得一个闭包的地址!只需要将它传给一个COpaquePointer类型,这几乎是swift刚出的时候所有需要使用函数指针的人的套路)。所以,不管它们是什么类型,我们就当作它们是一个更加安全的指针吧。
编译器看到它们会怎么处理?我并没有看过语法树的组成,但是显然会有一个字段用来区分它们。但是运行库是否保障了它们的不变性?这就要靠实验了。
类型推断又是怎么处理呢?显然,一个var对象里还有一个类型字段,我的看法是init方法不仅返回了一个对象,还返回了一个类型字段,或者对象本身带有类型字段。var对象在接收这个对象后,便给自己的类型字段赋值,就和具名类型没什么区别了。
值类型与引用类型
显然结构和元组们都隐含了一个基类,这个手段已经被用了无数次了,不再叙述。但是枚举则比较特殊,它可以指定类型,这应该是因为一个类型字段导致的。
它们的赋值号经过了特殊处理而进行了拷贝。而引用类型显然只是返回了一个浅表副本。自然有一个隐藏的方法存在。
方法
闭包们难以获取地址,这让两个闭包的比较变得十分困难。显然,现代对方法的描述应该包括返回值,方法签名和方法体。OC中有一selector和IMP指针就是用于描述它们的。很多人仿照C#“发明”了一个C#中的委托,用来保证闭包的可使用性。Swift中也有这些方法信息,但是显然编译器比我们了解的更多--这几个对象相当不透明,甚至于没有暴露任何东西。很多人直接打印这些对象来欺骗编译器,最终证实了这一点:swift描述方法的方式与OC相同,这使得他们能够互相理解。也使得swift可以直接套用cocoa的运行环境。
然而 swift在实现中有一些不合常理的地方,这也使得OC很难理解有些swift的表达。这将在之后描述。


  • 秋色夏影
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
诡异的swift 第一题:晕头转向
var lostMyWay:String??
这是一个什么对象呢?看起来像是一个String的可选对象的可选对象。那么lostMyWay??.characters和lostMyWay??characters的区别显然是很大的,但是找到这个问题时你一定会疯掉。


2025-09-04 13:04:24
广告
不感兴趣
开通SVIP免广告
  • 秋色夏影
  • 知名人士
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
诡异的swift 第二题:“大”问题
for var i=Int32.Max-1;i<=Int32.Max;i++ {
}
编译器没有疯,你也没有疯,但是你的XCode疯掉了。虽然所有的语言都会有这个毛病,但是似乎只有swift的毛病比较特别。


  • linzyaa
  • 铁杆吧友
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
什么鬼?楼主需要去重读初中语文。


  • 陈文清
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看不懂听不懂


  • 一生飘逸064
  • 中级粉丝
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
确实需要读中文。。。


  • 大学霸_IT达人
  • 意见领袖
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
研究的好深入。


  • cym9055
  • 初级粉丝
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
老规矩,女神镇楼。


2025-09-04 12:58:24
广告
不感兴趣
开通SVIP免广告
  • lyc20041
  • 高级粉丝
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哪来那么多“显然”,Swift开源了,去https://github.com/apple/swift看就知道怎么实现的了,用不着你在这猜。


  • A丶BabyS
  • 活跃吧友
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第一题,swift中有可选这个概念,你光是写明引用string 如果写完后面的swift会自动识别


  • 部落的华丽
  • 核心吧友
    6
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这里只有我一个觉得楼主其实什么也不懂,只是乱堆些词的么?


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 16回复贴,共1页
<<返回swift吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示