ZhouJiatao's Blog

iOS小问题汇总

这里收录了iOS开发中能遇到的各种小问题。

[__NSArrayI addObject] unrecognized

当你运行程序时出现以下错误信息:

NSMutableArray addObject: -[__NSArrayI addObject:]: unrecognized selector sent to instance

说明你在向一个immutable数组添加对象。
如果直接向一个NSArray类型的数组添加对象,编译期间就会报错,并不会等到运行时。所以这种报错通常是源于,你声明了一个NSMutableArray类型的数组,然后用一个immutable数组给它赋值。
比如

NSMutableArray *views = [self.subviews copy];

你该这样:

NSMutableArray *views = [self.subviews mutableCopy];

为什么edit_menu不显示中文

这是因为项目没有进行国际化,默认语言是英文。
解决方法很简单:

  1. 在Xcode界面左侧的Project Navigator面板选择你的项目;
  2. Project Editor面板的PROJECT下,再次选择你的项目;
  3. 视线稍微向右看,点击Info -> 展开Localizations -> 点击”+” -> 选择语言Chinese(Simplified);
    app会根据设备的语言环境,自动切换语言。运行在中文环境下,Edit Menu将显示为中文。

‘Xcode process launch failed: Security’

通过Xcode将app运行到iPhone时,Xcode出现一个提示框,内容如下:

Could not launch "your app"
process launch failed: Security

app不能在iPhone中运行起来。
解决这个问题,你需要在iPhone中进入 Setttings->General->DeviceManagement,点击你的app,在弹出框中选择trust。
在iOS 9以下,你可以直接在手机桌面点击app,将有一个弹出框跳出,提示是否想要运行这个程序,选择确定然后重新编译运行程序。

Xcode上传Archive时发生“Cannot verify client. (3000)”错误

冷静。
重新启动Xcode -> Clean -> Build -> Archive.
OK!
提示:如果你添加了新的图片资源,最好能先commit一下你的最近一次更改。因为我使用Xcode 7,发现在提交代码前clean project,最近添加的图片资源会消失。

iTunes connect找不到新上传的build

通过Xcode上传了新版本,但iTunes connect的Build选择框看不到该版本?

当你通过Xcode上传了版本后,在iTunes connect->MyApp->选中你的App->Activity可以看到你刚才上传的版本。并显示状态为 “Processing”。此时已经证明你成功上传版本到iTunes connect了。

buildProcessing

但在“processing”状态下的“Build”,是不能被选用的。你需要等待,当“processing”状态过后,你就可以选用此“Build”。
我上传的一个50Mb的app,需要等待半个小时左右。

在 StoryBoard 中移除 Static TableView 的个别 Cell 的分隔线

通过将分隔线的 left inset 设置为超出屏幕宽度的值。
在 Storyboard 中选择 Cell, Attributes inspector -> Separator -> Custom Insets:
Left 填写 2000。(数字大到足以超出屏幕即可)

去除 UITableView 多余的分隔线

当 cell 的数量不足以填满整个屏幕时, tableview 会在底部显示出许多分割线。
如何去除多余的分隔线? 为 tableview 添加 footerView 即可(代码和 UIStoryboard 都可以添加)。

1
tableView.tableFooterView = UIView()