各类常见错误解决

这篇博客汇总了iOS开发过程中遇到的各种错误,包括删除默认viewController和mainstoryboard后的黑屏问题,Assigning to 'id'警告,手势不响应,Xcode的语法高亮和代码提示缺失,flutter混编项目的安装问题,加入第三方文件夹的头文件识别问题,以及多个编译错误和解决方法。同时,还涵盖了cocoapods导入头文件不自动补全,找不到xib文件,Flutter运行报错,UIViewController加载nib文件时的view outlet未设置,删除storyboard后的屏幕黑边,cell样式重定义,链接器找不到库,OC调用C++代码的问题等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.删除自带的viewController以及mainstoryboard之后黑屏的原因是没有关联新增的界面,

需要在配置文件中取消main界面的关联以及在项目属性中去掉关联并在appdelegate中关联新界面为根视图

self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    self.window.rootViewController = [[SignUpViewController alloc]initWithNibName:@"SignUpViewController" bundle:nil];
    [self.window makeKeyAndVisible];
    
    //- (void)makeKeyWindow;
让当前UIWindow变成keyWindow(主窗口)

//- (void)makeKeyAndVisible; 
让当前UIWindow变成keyWindow,并显示出来
2.警告⚠️Assigning to ‘id’ from incompatible type ‘LoginViewController *__strong’
这个问题在设置代理对象的时候出现的,例如,在init方法里有这样的赋值:

self.loginView.delegate = self;

代理对象要给loginView进行代理。警告出现的原因是代理对象,没有实现被代理对象,也就是loginView的代理协议。
可以在实现文件里面这么改:

@interface LoginViewController()<LoginViewDelegate>

3.不响应手势
一定要设置允许用户交互
    testimageView.userInteractionEnabled = YES;
4.
Implicit conversion of an Objective-C pointer to 'NSError *__autoreleasing  _Nullable * _Nullable' is disallowed with ARC

在error前面加个*
5.Xcode无语法高亮 无代码智能提示 解决方法
~/Library/Developer/Xcode/DerivedData
~/Library/Caches/com.apple.dt.Xcode
把上面两个目录里的文件清掉

然后在xcode里面clean
6.flutter混编项目中:

This app could not be installed at this time.
Could not hardlink copy /Users/zhaoztcorp.21cn.com/Library/Developer/CoreSimulator/Devices/D4B603FF-C86B-470D-A34A-801FE594D4A0/data/Containers/Bundle/Application/9FB7DC3C-7222-4C11-86D0-8FF257A9FF88/TYUserCenter.app to /Users/zhaoztcorp.21cn.com/Library/Developer/CoreSimulator/Devices/D4B603FF-C86B-470D-A34A-801FE594D4A0/data/Library/Caches/com.apple.mobile.installd.staging/temp.eRYfUn/extracted/Payload/TYUserCenter.app with manifest /Users/zhaoztcorp.21cn.com/Library/Developer/CoreSimulator/Devices/D4B603FF-C86B-470D-A34A-801FE594D4A0/data/Library/Caches/com.apple.mobile.installd.staging/temp.eRYfUn/extracted/com.apple.deltainstallcommands.zzt510824

解决办法: 修改build版本号,修改buildID ,然后clean一下,重新运行 
7. 加入第三方的文件夹的瘦,不能识别.h或者其他文件的原因: file-workplace settings 选择,然后重启

Multiple commands produce ‘/Users/zhaoztcorp.21cn.com/Library/Developer/Xcode/DerivedData/buttonDemo-ecpyycdbbkxalnczopahhjxqaocb/Build/Products/Debug-iphonesimulator/RoundButton/RoundButton.framework/Headers/RoundButton-umbrella.h’:

  1. Target ‘RoundButton’ (project ‘Pods’) has copy command from ‘/Users/zhaoztcorp.21cn.com/Desktop/UILibDemo/buttonDemo/Pods/RoundButton/RoundButton/RoundButton-umbrella.h’ to ‘/Users/zhaoztcorp.21cn.com/Library/Developer/Xcode/DerivedData/buttonDemo-ecpyycdbbkxalnczopahhjxqaocb/Build/Products/Debug-iphonesimulator/RoundButton/RoundButton.framework/Headers/RoundButton-umbrella.h’
  2. Target ‘RoundButton’ (project ‘Pods’) has copy command from ‘/Users/zhaoztcorp.21cn.com/Desktop/UILibDemo/buttonDemo/Pods/Target Support Files/RoundButton/RoundButton-umbrella.h’ to ‘/Users/zhaoztcorp.21cn.com/Library/Developer/Xcode/DerivedData/buttonDemo-ecpyycdbbkxalnczopahhjxqaocb/Build/Products/Debug-iphonesimulator/RoundButton/RoundButton.framework/Headers/RoundButton-umbrella.h’ 解决办法跟上一个相同

8.cocoapods导入的头文件不自动补齐的解决办法image

9.报错找不到相应xib文件,loadNibNamed名字没改

10.Flutter在iOS设备运行报错fatal error: ‘Flutter/Flutter.h’ file not found

1.首先进入到项目下的ios文件夹下
2.删除example/ios/podfile.lock and example/ios/pods
3.flutter clean

flutter.h not found 
改为
#import <Flutter/Flutter.h>

11.Terminating app due to uncaught exception ‘NSInternalInconsistencyException’, reason: ‘-[UIViewController _loadViewFromNibNamed:bundle:] loaded the “ViewController” nib but the view outlet was not set.’

加载了一个ViewController视图,但是没有将相应的xib文件的View和Controller的View进行连接


12.删除storyboard后 黑边解决

13.cell重定义样式

 if (!cell) {
        cell = (CN21UILibBMBTableViewCell*)[[[NSBundle mainBundle] loadNibNamed:TableViewVCIdentifier
                                                                     owner:self
                                                                   options:nil] objectAtIndex:0];


或者是在cell文件中就写好类方法 
然后 直接【cell cell】;

+ (instancetype)missionCell
{
    return [[[NSBundle mainBundle] loadNibNamed:@"missionCell" owner:nil options:nil]objectAtIndex:0];
}
    }

14.ios pods引入第三方库 报错:ld: library not found for -lxxxx

找到target(指定项目) -> build Settings -> Library Search Paths , 填写提示找不到的按个库的路径。
路径填写方式:"${PODS_CONFIGURATION_BUILD_DIR}/XXXX";
前面是固定的,后面是库名

15.Command PhaseScriptExecution failed with a nonzero exit code

选worrking settings 把新版本build改为旧版本build,然后重启xcode
16.Command /bin/sh failed with exit code 1

build phases那里脚本运行勾上Run Run script only when installing 
17.cocoapods导入的头文件不自动补齐的解决办法

在这里插入图片描述
在这里插入图片描述

18.Flutter在iOS设备运行报错fatal error: 'Flutter/Flutter.h' file not found

flutter.h not found 
改为
#import <Flutter/Flutter.h>

在这里插入图片描述

19.报错:
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "ViewController" nib but the view outlet was not set.'
原因是:
加载了一个ViewController视图,但是没有将相应的xib文件的View和Controller的View进行连接

在这里插入图片描述

20.xcode已经下载旧版本模拟器但是列表中不现实的问题,修改项目适配型号

在这里插入图片描述

21.删除storyboard后 黑边解决

在这里插入图片描述
在这里插入图片描述

22.
自定义tableviewcell !cell的重定义格式:需要load相应的xib文件才行
 if (!cell) {
        cell = (CN21UILibBMBTableViewCell*)[[[NSBundle mainBundle] loadNibNamed:TableViewVCIdentifier
                                                                     owner:self
                                                                   options:nil] objectAtIndex:0];


或者是在cell文件中就写好类方法 
然后 直接【cell cell】;

+ (instancetype)missionCell
{
    return [[[NSBundle mainBundle] loadNibNamed:@"missionCell" owner:nil options:nil]objectAtIndex:0];
}
    }
23./Users/zhaoztcorp.21cn.com/Library/Developer/Xcode/DerivedData/TYUserCenter-ggvwnrggejaxcnfbqspyiwqvdjbq/Build/Products/Debug-iphonesimulator/TYUserCenter.app/Frameworks/Flutter.framework/Flutter: **Permission denied**




解决办法:flutter的源文件中的签名文件版本冲突,并且在切换版本的时候没有自动替换,这个解决办法只能删除flutter文件环境,并重新
git clone -b v1.5.4 https://github.com/flutter/flutter.git --verbose
生成新的flutter环境文件,并flutter doctor

24.Conflicting types for 'curl_mime_init'
第三方库和系统的.h文件冲突问题,更改头文件引用《》为“”

在这里插入图片描述

25:OC代码调用C++代码

将需要调用的OC.m文件改成OC.mm文件即可,其他不变
文件区别:

.h :头文件。头文件包含类,类型,函数和常数的声明。 
.m :源代码文件。这是典型的源代码文件扩展名,可以包含Objective-C和C代码。 
.mm :源代码文件。带有这种扩展名的源代码文件,除了可以包含Objective-C和C代码以外还可以包含C++代码。仅在你的Objective-C代码中确实需要使用C++类或者特性的时候才用这种扩展名

.cpp:只能编译C++ 

当你需要在源代码中包含头文件的时候,你可以使用标准的#include编译选项,但是Objective-C提供了更好的方法。#import选项和#include选项完全相同,只是它可以确保相同的文件只会被包含一次。Objective-C的例子和文档都倾向于使用#import。

.m 和.mm 的区别是告诉gcc 在编译时要加的一些参数。当然.mm还可以命名成.m,但在编译时要手动加参数(麻烦)

常用场景:

如果你的OC代码里面有包含C++的引用或代码,将此类更改为.mm即可;

gn gen失败在这里插入图片描述

重点,看see的那一句,test_create_folder出了问题,我们在根目录的build.gn中屏蔽这个test即可。

安装xcodecommonlintools命令::xcode-select install

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值