[英]NSMutableArray in appdelegate - EXEC_BAD_ACCESS
我正在嘗試在appdelegate中使用全局數組作為我正在構建的演示的快速修復。 有關的代碼
.h文件具有聲明
{
NSMutableArray * trnEntered;
}@屬性(非原子,保留)NSMutableArray * trnEntered
.m文件具有以下代碼-
trnEntered = [[NSMutableArray alloc] init];
NSLog(@“%@”,[trnEntered count]); //打印null。
[trnEntered addObject:@“ 1”];
NSLog(@“%@”,[trnEntered count]); //執行錯誤的訪問權限。
不知道我在哪里錯了。 看起來相當簡單。
我在這里先向您的幫助表示感謝,
特雅
您的代碼似乎有問題:
NSLog(@"%@",[trnEntered count]); // prints null.
[trnEntered addObject:@"1"];
NSLog(@"%@",[trnEntered count]); // exec bad access.
兩次對NSLog的調用都試圖將NSUInteger
打印為Objective-C對象。 這將導致問題。 您應該使用NSLog(@"%d", [trnEntered count]);
我建議您閱讀有關格式說明符的更多信息,這里有很多有用的信息。
更多信息:第二個NSlog
正在嘗試打印代碼聲明位於內存位置0x00000001的NSObject的description
。
第一個NSLog不應打印'null',因為您的init方式有問題,請嘗試執行此操作。
trnEntered = [[NSMutableArray alloc] initWithCapacity:1];
trnEntered = [[NSMutableArray alloc] init];
NSLog(@"%@",[trnEntered count]); // prints null.
[trnEntered addObject:@"1"];
NSLog(@"%@",[trnEntered count]); // exec bad access.
原因是因為您使用的格式化字符串錯誤。 您正在嘗試使用整數作為字符串指針,這當然會導致分段錯誤(或蘋果術語EXC_BAD_ACCESS)。 使用%d打印整數,即[trnEntered count]返回的整數。
NSLog
默認情況下以String格式打印ans,因此,如果要打印整數值,則必須使用%d
及其值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.