1. 程式人生 > >iOS/------報錯問題集合(一)-------------------------------------

iOS/------報錯問題集合(一)-------------------------------------

1.原因:應用程式試圖在LoginViewController上模態出一個空的檢視控制器。

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target <LoginViewController: 0x7fc692e0d300>.'

2.一個navigationController不能pushnavigationController,可以presentnavigationController

只有navigationController才能用push方法;

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported'

 3。應用程式需要一個啟動控制器,(檢視工程---Deployment--main interface如果不是載入的mainstoryBoard中的控制器,把main刪掉;如果自己新建的storyBoard,檢視箭頭有沒有指向要載入的控制器)

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application windows are expected to have a root view controller at the end of application launch'

4..不允許在隔離的控制器上present出一個控制器

. Presenting view controllers on detached view controllers is discouraged <LeftSortsViewController: 0x7fbccb525540>.

5,約束問題

Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to activate constraint with items <UIButton: 0x7f909150fb50; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x7f909150fdf0>> and <UIView: 0x7f9091745800; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7f909173ffa0>> because they have no common ancestor.  Does the constraint reference items in different view hierarchies?  That's illegal.'

*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: A multiplier of 0 or a nil second item together with a location for the first attribute creates an illegal constraint of a location equal to a constant. Location attributes must be specified in pairs'

6,不允許模態出一個已經在前臺的控制器()

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application tried to present modally an active controller <MainTabBarController: 0x7fe7c3050800>.'

7.連結問題,有重名的檔案

clang: error: linker command failed with exit code 1 (use -v to see invocation)

8.屬性命名不能有關鍵字.不能以new開頭

9.scrollView 中新增控制器的view;

   問題: 程式 一執行 就像 執行緒阻塞一樣卡死 十幾秒後 崩潰

  解決:將控制器的view直接新增到scrollerview的view上,不過需要注意的是在scrollerView中建立控制器時一定要強引用這個控制器,也就是說scrollerView的控制器沒死時,就要保證建立的控制器不能死。

10.在viewDidLoad裡面呼叫

presentViewController:self.browseranimated:YEScompletion:會不起作用,並且提示: whose view is not in the window hierarchy;

11.把A控制器新增到B控制器,就相當於吧A控制器的view新增到B控制器的view中,這裡要注意在interface中吧A控制器新增strong強引用;否則不起作用;

12.當你從別人那拿到一個專案,放到自己電腦上需要重新sign,如果現實簽名無效,就把automatically manage signning 勾選上;

如果還是出現如下紅框2的報錯:說明我的蘋果賬號7天建立了超過10個bundle IDentifier;這時可以吧bundle IDentifier改成以前的。


13.NSSetUncaughtExceptionHandler

iOS SDK中提供了一個現成的函式 NSSetUncaughtExceptionHandler 用來做異常處理,但功能非常有限,而引起崩潰的大多數原因如:記憶體訪問錯誤,重複釋放等錯誤就無能為力了,因為這種錯誤它丟擲的是Signal,所以必須要專門做Signal處理。首先定義一個UncaughtExceptionHandler類,.h標頭檔案的程式碼如下:

#import <UIKit/UIKit.h>

@interface UncaughtExceptionHandler : NSObject

{

BOOL dismissed;

}

@end

=======================

#import "AppDelegate.h"


void InstallUncaughtExceptionHandler()

{

signal(SIGABRT, MySignalHandler);

signal(SIGILL, MySignalHandler);

signal(SIGSEGV, MySignalHandler);

signal(SIGFPE, MySignalHandler);

signal(SIGBUS, MySignalHandler);

signal(SIGPIPE, MySignalHandler);

}

@interfaceAppDelegate ()

@end

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   在地點finishapplication:方法中呼叫 NSSetUncaughtExceptionHandler(&InstallUncaughtExceptionHandler);

//異常處理--產生異常就會呼叫InstallUncaughtExceptionHandler函式

}

這樣,當應用發生錯誤而產生上述Signal後,就將會進入我們自定義的回撥函式MySignalHandler。

14.sign證書問題;------先把鑰匙串開啟,可以把automatically sign前面的勾去掉再勾上試試,或者在鑰匙串中刪掉證書。

The certificate used to sign "GPUIMageTest" has either expired or has been revoked. An updated certificate is required to sign and install the application.

15. -fembed-bitcode is not supported on versions of iOS prior to 6.0


16.需要在info。plist中設定private許可權。

This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

17.iOS螢幕顯示上下有空白-----------------解決辦法:缺少合適的啟動圖片,吧launchImage設定一下;

18.self.title不起作用-------------------------可能在tabBarController的外層包了一層導航控制器,這個導航控制器作為window的根控制器;導致這個導航控制器的導航欄吧ta bBarController子控制器的導航欄遮擋了,所以self.title設定無效;
當tabBarController中的子控制器直接是導航控制器(不是viewcontroller外面包裝導航控制器的那種),新增導航標題時用下面的方法:
    UILabel *lbl=[[UILabel alloc]initWithFrame:CGRectMake(self.view.frame.size.width*0.5-10, 10, 60, 30)];
    [email protected]"發現";

    [self.navigationBar addSubview:lbl];

19===========.AFNetworking報錯:請求出來的資料是一大堆16進位制資料,原因後臺資料不規範,不是json格式的資料;

failureBlock :Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set., NSUnderlyingError=0x618000247440 {Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: not found (404)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x610000033f60> { URL: http://shop.ahwofu.com/index.php?m=Api&c=Index&a=homePage } { status code: 404, headers {

    Connection = "keep-alive";

    "Content-Encoding" = gzip;

    "Content-Type" = "text/html; charset=utf-8";

    Date = "Tue, 18 Apr 2017 02:10:59 GMT";

    Server = "nginx/1.4.4";

    "Transfer-Encoding" = Identity;

    Vary = "Accept-Encoding";

    "X-Powered-By" = "PHP/5.5.7";

} }, NSErrorFailingURLKey=http://shop.ahwofu.com/index.php?m=Api&c=Index&a=homePage,


 responseSerializer 使用 AFHTTPResponseSerializer,這樣就不能享受 AFNetworking 自帶的JSON解析功能了,拿到 responseObject 就是一個 Data 物件,需要自己根據需要進行反序列化。
NSString *reponStr = operation.responseString;
        NSData* data=[reponStr dataUsingEncoding:NSUTF8StringEncoding];
        id dict=[NSJSONSerialization  JSONObjectWithData:data options:0 error:nil];
        NSLog(@"獲取到的資料為:%@",dict);


==========陣列未初始化

invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.

libc++abi.dylib: terminate_handler unexpectedly threw an exception

=================tag值混亂,不知道點選的是哪一個

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSTaggedPointerString aUsername]: unrecognized selector sent to instance 0xa0000006973696c4'


============tableview cell 的服用的IDdentifier沒找到,導致沒有可用的cell;

*** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-3347.44.2/UITableView.m:6245

========

Failed to chmod user/Library/Developer/CoreSimulator/Devices NO Such File Or directory
  • 1
  • 1

最後只好找度娘了….說reset 一下模擬器就好了…就是這樣Simulator -> Reset Content and Settings...,,,試了一下…還真可以…當然,如果還不行的話,,就重啟 Xcode,,,, 再不行,,,就重啟電腦吧….

=======WF: _WebFilterIsActive returning: NO==========ios10以上改成MKWebview就可以了;

===========Assertion failure in -[UICollectionView _dequeueReusableViewOfKind:withIdentifier:forIndexPath:viewCategory:]

cell 沒有找到,建議看看佈局是否完整,identifier設定的是否正確;

 ====證書過期======重新automatically manage sign


====

"_OBJC_CLASS_$_XXX", referenced from:

原因:缺少檔案,或檔案我參與編譯,framework 沒匯入,真機和測試也要注意,.m檔案為參與編譯解決:在build Phases->Compile Sources 中新增相應的類檔案===========點選textfield彈出鍵盤時崩潰Can't find keyplane that supports type 5 for keyboard iPhone-PortraitChoco-PhonePad; using 2024220450015396792_PortraitChoco_iPhone-Complex-Pad_Default
解決辦法:=====

linker command failed with exit code 1解決方案

解決方案:http://colabug.com/172588.html

1,看看是不是有新新增的檔案跟之前檔案同名

2,錯誤資訊中出現了某個類的名字,去原檔案中看看#import了哪些第三方庫,把這些庫挨個註釋排除,找到出錯的那個庫,然後按照官方提供的步驟重新新增一遍。

3.SVN或git忽略了某些檔案,如.o 等檔案沒能update下來,檢視.o檔案可能是紅色的,可以重新新增或者修改SVN(git)的忽略設定

4.把.a檔案刪除再重新拖到專案中解決問題

5.可能重複添加了檔案(也可能沒勾選 Copy items if neded 這個選項),建議刪除後重新新增

6.工程中檔名重複了 也會出現同樣的錯誤

7.”Build Settings”->”Enable Bitcode”設定為NO ,因為有些SDK不支援Bitcode

8.可能在引用的時候 可能寫的是#import “XXXXX.m” ,如果是改為#import “XXXXX.h”

9.可能你匯入的SDK只能在真機下才能執行,模擬器會報錯!

10.找到 Build settings->Linking->Other Linker Flags將此屬性修改成-all_load 或者 -ObjC

11.Build settings->Search Path->Library Search Paths 新增靜態庫的相應路徑

=====

invalid bitcode signature解決方案

解決:換真機試一試;========Terminating since there is no system app.webView返回崩潰:返回的上一級頁面如果是Tableview,cell上的圖是從網路實時下載的,如果圖片太大,可能會崩掉哦============= 報錯,真機執行報錯Showing Recent Issues CodeSign /Users/wofu/Library/Developer/Xcode/DerivedData/wofubao-gwycsluotlqifyfgppjkhmfwwurg/Build/Products/Debug-iphoneos/wofubao.app     cd /Users/wofu/Desktop/ios-2/2號錢包/Wofubao     export CODESIGN_ALLOCATE=/Applications/Xcod解決:先退出xcode,再把/Users/appleapple/Library/Developer/Xcode/DerivedData/下面的東西都刪除(DerivedData本身不要刪),再啟動xcode,再rebuild. =====xcode爆出"Command /usr/bin/codesign failed with exit code 1"這樣一個錯

解決辦法:

當時以為是授權檔案設定不正確的問題,於是從開發者賬戶上重新下載授權檔案進行了安裝,。。。不好使,後來想了想,可能是存在兩個相同授權檔案的問題(一個用過期證書)

開啟Xcode->Preferences->Account,選擇你開發者賬戶,在右下側選擇View Details,在Provisioning Profiles一欄,果然發現了兩個一樣名字的授權檔案,一個是過期的,一個是正在用的,把兩個刪掉,再重新安裝最新的授權檔案,OK了,標註一下,省的以後忘記了


=======push出去的時候出現卡頓的解決辦法:從普通控制器push出去:解決---

//加上這個在主執行緒非同步就不卡頓了

dispatch_async(dispatch_get_main_queue(), ^{}

從cellpush出去:解決

http://blog.csdn.net/gang544043963/article/details/48656545

首先,在tableview的didSelectRowAtIndexPath:方法中有push控制器:

  1. [self.navigationController pushViewController:assetsVc animated:NO];  

一般情況下push控制器沒什麼問題,關鍵在於,在assetsVc控制器中有一個動作執行需要800ms時間。

經過測試,把這個耗時的方法分別放在viewDidLoad、viewDidAppear裡面,tableview均會卡頓。

問題思考:assetsVc裡面的耗時操作為什麼會使tableview卡頓?

經過試驗發現,從tableview向assetsVc的頁面跳轉動作發生在assetsVc頁面載入完成之後,也就是說,在assetsVc執行完viewWillLoad、viewDidLoad、viewWillAppear、viewDidAppear、viewWillLayoutSubviews、viewDidLayoutSubviews之後,頁面才會跳轉。

解決辦法:

為了提升使用者體驗,讓剛才說的耗時操作非同步執行就可以了。


=======UITableview報錯

Assertion failure in -[UITableView _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3698.21.8/UITableView.m:9373

原因:沒有註冊cell;解決:註冊cell或者在cellforRow中判斷例項化cell;解決:http://blog.csdn.net/qq_31448571/article/details/78533662
============報錯

iOS:Error Domain=WebKitErrorDomain Code=101 "The operation couldn’t be completed. (WebKitErrorDomain

解決

NSString *urlStr = [NSString stringWithFormat:@"%@?uid=%@&uname=%@",KQuestionnaireUrl,model.idStr,model.real_name];

urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURL *url = [NSURLURLWithString:urlStr];

NSURLRequest *request = [[NSURLRequestalloc]initWithURL:url];

[webView loadRequest:request];

webView無法載入包含中文URL,轉碼編譯即可

============

這種問題引起的原因往往是匯入了包,但是沒有配置Framework Search Path所導致的。Framework Search Path的作用就是讓xcode按照你給的路徑去找到第三方庫所在的位置。如果你不配置,就會報file not found。 

這裡是個坑,很多人遇到這種問題,不知道怎麼解決。下面說下解決辦法以及需要注意的事項:

1 點選xcode工程的專案名,然後在targets裡點選Build Setting,然後找到Search paths,就可以看到Framework Search Path。

2 選中按回車建,或者tab鍵就可以編輯了,雙擊也可以編輯,點選+號新增就可以。

3 新增第三方庫注意一點,有兩種方式,一種是相對路徑,一種是絕對路徑。絕對路徑適合就你一個人開發,相對路徑在團隊協作的時候我們一定要用。

按照上面步驟把第三方庫路徑新增進去後,再編譯下xcode,發現一切都正常了。

檢查Header Search Path、Library Search Path、FrameWork Search Path

相關推薦

床頭筆記之Android開發番外篇解決

已有專案時新建專案執行報錯 your project contains error(s),please fix them before running your application 工程上有紅叉,不知道少了什麼,但是工程中卻沒有任何錯誤,執行程式報錯為: Y

freemarker寫select元件總結

1、具體錯誤如下 六月 25, 2014 11:26:29 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 嚴重: Template processing error: "Expression name is

SSM框架分析——There is no getter for property named 'XXX' in 'class java.lang.String'

一、發現問題 <select id="queryStudentByNum" resultType="student" parameterType="string"> select num,name,phone from student <where> <if t

Hue上檢視spark執行資訊

點選Hue報錯頁面,找到application_ID 根據application_ID到yarn介面(http://bigdata.lhx.com:8088/cluster)找到完整資訊 點選ID或者history進入logs介面 詳細報錯資訊:spark找不到叢集中asmp資料

iOS/------問題集合-------------------------------------

1.原因:應用程式試圖在LoginViewController上模態出一個空的檢視控制器。Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Application

grpc問題集合

grpc:坑1 這裡有個坑: 嘗試編譯:  $ python -m grpc_tools.protoc -I. --python_out=. --grpc_python_out=. ./data.proto #在 example 目錄中執行編譯,會生成:data

Java集合 CopyOnWriteArrayList

fin unlock new lean lock 元素 pan 控制線 sem CopyOnWriteArrayList 類分析 1. CopyOnWriteArrayList 其中底層實現存放數據是一個Object數組: private volatile tran

freemarker寫select組件總結

popu sts 定義 style runt schedule size template marker 1、錯誤描寫敘述 六月 25, 2014 11:32:49 下午 freemarker.log.JDK14LoggerFactory$JDK14Logge

freemarker寫select組件總結

type freemark user source ftl data reference res value 1、錯誤描寫敘述 六月 26, 2014 10:53:26 下午 freemarker.log.JDK14LoggerFactory$JDK14Log

基礎篇之集合List總結

intern ansi [] 集合 add 引用 public log ++ 1. List集合下常用的集合(ArrayList,LinkedList,Vector);   JVM垃圾回收GC,Java中采取了可達性分析法,標記所有從根節點開始的可達對象,未被標記的對象就

java集合:List、Iterator、Array、ArrayList、LinkList

整體 http 是否 簡潔 畢業 一個 位置 數據 reac 畢業這麽久,java 標準庫中的集合都沒怎麽仔細了解過,準備好好學習學習。 集合(Collection):由一個或多個確定的元素所構成的整體叫做 集合--百度百科的解釋。換言之,就是裝元素的容器,元素可以是任何類

iOS 開發者的 RxSwift

ner 調度 obs 觀察者 ble 事件 let original super RxSwift 或許我們都聽說過,但或許只知道 RxSwift 這個單詞,長篇大論關於 RxSwift 的介紹往往使讀者迷失在各種概念當中,卻不知如何讓它大展伸手。或許我們可以換一種姿勢,

集合

單個字符 enumerate 並集 std 不可變 abc pri 不重復 字典 set是Python中一種基本數據類型,它分為可變集合(set)和不可變集合(frozenset)兩種。類似於其他語言,集合是一個無序不重復元素集,包括創建集合set、向集合中添加元素、刪除集

Java並發集合-CopyOnWriteArrayList分析與使用

有用 正在 pack cow pub cloneabl element pyo 關鍵字 原文鏈接:   http://ifeve.com/java-copy-on-write/ 一、Copy-On-Write Copy-On-Write簡稱COW,是一種用於程序設計中的優化

解決Android4.4及以下Volley框架Patch請求問題Kotlin

volley請求在4.4以下呼叫patch請求,會報以下錯誤 java.net.ProtocolException: Unknown method ‘PATCH’; must be one of [OPTIONS, GET, HEAD, POST, PUT, DELETE, TRAC

spring+springmvc+mybatis環境搭建問題

1.啟動程式報錯: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;          

【第12天】Java集合

1 什麼是集合?有哪些分類 1.1 JCF(Java Collections FrameWork) 2 ArrayList ★ 2.1 包裝類 2.2 基本用法與特點 2.3 刪除元素

安裝單機CHD5.12解決補充

oozie啟動失敗 (1) 拷貝mysql的驅動檔案。 一個是需要把java的mysql的驅動jar檔案拷貝到oozie的lib目錄中 /opt/cloudera/parcels/CDH-5.12.0-1.cdh5.12.0.p0.29/lib/oozie/lib   改為將jar檔案拷貝

loadrunner 常見報彙總

一、LoadRunner26377錯誤 通常不是長度的問題,如果長度有問題就都出錯了。應該是伺服器返回的資料問題,導致沒有找到這個引數。 26377錯誤的成因很多,總結最直接的結果就是No match found for the requested parameter "

Java集合-ArrayList原始碼解析

ArrayList是什麼? ArrayList是Java集合中的一份子,它的內部結構實為陣列並封裝了一些方法和特性方便使用者,為什麼不用陣列呢?因為ArrayList更加方便:如果你再不確定元素個數的情況下建立一個數組,那麼在陣列容量不夠的情況下需要手動擴容(也就是重新初始