写过tableView的童鞋都知道,有必须的两个代理方法要实现,还有几个选择实现的。

必须实现的代理方法:

~设置行数

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;

~初始化并设置cell样式及内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;

选择实现的代理方法:

~设置列表分组数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;              // Default is 1 if not implemented

~设置每行高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;

当然还有其他的,这里就不在粘贴了,注意这里列出的最后一个可选代理方法,这是个隐藏已久的坑。今天就来说说这个

话说今天处理iPhone 64位系统出现的弹框问题,在首次安装程序时会弹出警告的问题。

弹出警告的原因是程序在编写时,未添加ARM给64的指令集,也就是“arm64”,用到该指令集的手机类型如下列出

iPhone6s、iphone6s plus
iPhone6、iPhone6 plus
iPhone5S
iPad Air、iPad mini2(iPad mini with Retina Display)

注:摘自iOS中的armv7,armv7s,arm64,i386,x86_64都是什么

解决方法就是添加arm64到项目配置中:路径是Targate->Build Settings->Architechtures, 配置如下

添加之前的配置:

添加之后的配置:

但是,这只是个开始,Command+B之后,竟然Build failed了。

程序不仅有眼前的bug,还有远方未知的坑和改需求,但眼前的bug要先改完。

这次failed跟以往的不一样,先来看一段代码

NSInteger numberOfArray = [testDic[@"testId"] count];
return numberOfArray;

这时段示例代码,假设有个字典键“testId”对应的值是一个数组,使用“[]”语法取数组的count值,按说是不应该出错的

但是这里确实出错了,提示大致意思是:不能有多个方法访问count属性

必须写成下面的形式才可以通过:

NSInteger numberOfArray = [((NSArray *)testDic[@"testId"]) count];  //此处强转,只取数组的个数没问题,如果改数组就会出问题
或者
NSArray *testArray = testDic[@"testId"];
NSInteger numberOfArray = [testArray count];

没办法,只能一个一个修改。去除左边框框里的所有红色后,终于Build Succeeded

------------------------------------------------------------

进入后感觉如释重负,终于又干掉一个bug,于是像往常一样点了点几个主界面。

点到一个列表时,列表和我的心情都简直了? 。。。?...

这是属于我的战场,大战在即,开启全面警戒

半小时过去了,同事问我“好了吗?” --- 我伸个懒腰:“还没”

。。。

一个小时过去了

“好啦?” --- “我去一下厕所,减减压”

··· ···

是这个方法没做系统版本判断吗?

- (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:") __TVOS_PROHIBITED; // NSTextAlignment is not needed to determine size

改成下面的方法(参考:boundingRectWithSize:options:attributes:计算文本尺寸的使用)

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

然而,并没有什么 用

··· ···

一个半小时过去了

突然,想起了同事说过的一个坑,“我遇到那个这是个老坑了,别人跟我说的‘你看这里,加个CG就可以了’”。

然后我就去翻了翻那几个代理方法,就是在本文开始的时候特别提过的那个代理方法

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 

但是程序中并不是这么写的,而是

- (float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath; 

原来,这个代理方法在以前的返回值并不是CGFloat,而是一个float。

在iOS不断修改的过程中,为适应32位系统和64位系统,float和double被替换为CGFloat(注意此处不是宏定义,参考:iOS typedef到底是什么?),如下官方解释

CGFloat is just a typedef for either float or double.
typedef float CGFloat;// 32-bit
typedef double CGFloat;// 64-bit

好了,终于改掉了一个bug。如果你也遇到了,欢迎参考与指教。

另外个人新开了博客网站,欢迎路过。

分享曾经的收获

转载于:https://www.cnblogs.com/PaulpauL/p/6408831.html

arm64的适配问题,这次真醉了相关推荐

  1. 荣耀手环 鸿蒙,一大波鸿蒙设备曝光!华为这次真要发力了

    据国内媒体报道,近日,企查查显示,华为申请了一大批鸿蒙相关的商标,目前正在等待审查. 有猜测认为,华为鸿蒙正在发力,或许在下半年将会迎来关键节点. 曝光的截图显示,这些注册的商标包括:有HUAWEI ...

  2. Android 全面屏适配(小米真恶心)

    提高App所支持的最大屏幕纵横比,实现很简单,在AndroidManifest.xml中可做如下配置: <!--适配全面屏手机--><meta-data android:name=& ...

  3. 2分能出线,6分却不能出线?世界杯小组赛的出线规则这次真被我整明白了

    写在前面 这个月世界杯正是进行得火热,我这样的十几年的老球迷自然是场场不落,周边不少不看球的朋友甚至连我那一场比赛上多少人都弄不明白的老婆也能说上几句:"听说梅西输了?",&quo ...

  4. 欧洲杯这次“真”的来了

    上次写欧洲杯的文章还是在疫情前<"真正的"欧洲杯,鸡冻不鸡冻?>,谁都没想到,一场足球盛宴,推迟到了现在,可谓前无来者. 当时还意淫过,再来个足球之旅, 如果让我选择, ...

  5. cordova项目适配iPhoneX

    iPhoneX适配踩坑浅谈 Apple每次退出新尺寸的iphone都会掀起一番适配风波,这次没有下巴但有刘海的iPhoneX更是如此,网传横屏下的适配动画更是令不少人汗颜. 其实对于Native Ap ...

  6. iOS11和iPhone X的适配

    随着iOS11和xcode9刚开始正式发布,小编也迫不及待的更新了xcode9,手机也顺利更新到iOS,也终于见到iPhone X 的真面不,看着齐刘海的样式,小编心里淡淡的忧伤,怎么适配,如何快速适 ...

  7. Web App适配iPhoneX

    前言 Iphone每次退出新尺寸的手机都会掀起一番适配风波,这次没有下巴但有刘海的iPhoneX更是如此,网传横屏下的适配动画更是令不少人汗颜. 其实对于Native App来说,适配并不算困难(当然 ...

  8. OPPO 全球首发 Android 13 正式版,适配率超 96%!

    今年5月12日, Android 13 在谷歌I/O大会正式亮相,新系统在隐私保护.功能便捷性等方面进行了重大升级,引发全球瞩目.OPPO 作为国内头部手机厂商之一,不仅首批推出 Android 13 ...

  9. css iohone手机端适配,【css】适配iphoneX

    Web App适配iPhoneX 前言 Iphone每次退出新尺寸的手机都会掀起一番适配风波,这次没有下巴但有刘海的iPhoneX更是如此,网传横屏下的适配动画更是令不少人汗颜. 其实对于Native ...

最新文章

  1. python培训机构推荐-广州有哪些不错的python培训班
  2. 程序员面试题精选100题(47)-数组中出现次数超过一半的数字[算法]
  3. 关于AutoML的一些笔记
  4. 穿皮裤放屁,裤子会鼓吗?真相看这里!
  5. 【渝粤题库】陕西师范大学202831 程序设计 作业(专升本)
  6. 为移动端网页构造快速响应按钮
  7. comps电磁场模拟软件_电气工程仿真
  8. ProtoBuf协议详解
  9. Eclipse教程(3)--- 修改字符集
  10. Sentinel服务熔断只配置fallback_客户自定义限流处理_削峰填谷_流量控制_速率控制_服务熔断_服务降级---微服务升级_SpringCloud Alibaba工作笔记0050
  11. 走进音视频的世界——杜比音效之AC3与AC4
  12. Java GUI+MySQL 银行管理系统初级(课程设计)
  13. python 科比投篮数据可视化及简单分析
  14. Python-飞机大战(二)
  15. 6.5编程实例-立方体透视投影
  16. 高通正式开源 aptX 和 aptX HD 编码器
  17. 基于Java的网上手机销售系统的设计与实现(附:源码 论文 sql文件 部署视频)
  18. 2022Java面试笔记(上)
  19. Matlab 隐函数方程求解最小二乘法拟合一阶线性拟合二阶拟合传感器实验
  20. 【NOIP2013模拟】Vani和Cl2捉迷藏

热门文章

  1. 将cocos2dx项目从Visual Studio 迁移到 xcode
  2. Apache POI和EasyExcel 第三集:Apache POI的Excel大数据量写入(分为03版的xls、07版的xlsx、升级版SXSSF)
  3. linux 无法挂载系统,解决无法挂载Linux文件系统的问题
  4. c++ 结构体赋值_《零基础看得懂的C语言入门教程》—(十二)结构体是这么回事
  5. c语言编程输入年月日判断是否合法,C语言程序设计:输入年月日判断这是这一年中的第几天...
  6. java程序包不存在_第一章 Java语言简介
  7. python实现自动打电话软件_用Python拨打电话
  8. matlab pdist函数官方详解
  9. linux看到的分区重复,找到了linux分区顺序错乱修复方法
  10. Google Guava 概要