Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 应用程序未使用未调用的选项完成启动_Objective C_Cocoa Touch_Appdelegate - Fatal编程技术网

Objective c 应用程序未使用未调用的选项完成启动

Objective c 应用程序未使用未调用的选项完成启动,objective-c,cocoa-touch,appdelegate,Objective C,Cocoa Touch,Appdelegate,我试图弄明白为什么在我的应用程序启动时似乎没有调用“application didFinishLaunchingWithOptions”。我的NSLog(@“Launch!”)语句没有显示在控制台中,并且字典也没有创建。如果有区别的话,我会使用带有导航控制器的故事板作为初始视图。我尝试向导航控制器添加一个“对象”,并将其设置为“AppDelegate”,然后将其设置为引用出口,但这似乎也没有什么不同。这个方法不是应该在每次应用程序启动时调用吗?我甚至重置了模拟器,但仍然没有 谢谢 // //

我试图弄明白为什么在我的应用程序启动时似乎没有调用“application didFinishLaunchingWithOptions”。我的NSLog(@“Launch!”)语句没有显示在控制台中,并且字典也没有创建。如果有区别的话,我会使用带有导航控制器的故事板作为初始视图。我尝试向导航控制器添加一个“对象”,并将其设置为“AppDelegate”,然后将其设置为引用出口,但这似乎也没有什么不同。这个方法不是应该在每次应用程序启动时调用吗?我甚至重置了模拟器,但仍然没有

谢谢

//
//  AppDelegate.m
//  PersonLibraryiOS
//
//  Created by Joey on 11/7/12.
//  Copyright (c) 2012 Joey. All rights reserved.
//

#import "AppDelegate.h"
#import "AddViewController.h"
#import "Person.h"
@implementation AppDelegate
@synthesize PersonDict;

-(void)addtoDict:(Person *)newPerson
{
    [PersonDict setObject:@"newPerson" forKey:[newPerson name]];
}



- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSLog (@"Launch!");

    // Override point for customization after application launch.
    return YES;
    PersonDict = [NSMutableDictionary dictionaryWithContentsOfFile:@"diskDict"];

编辑:我最初写这篇文章的时候一定是过得很糟糕。删除了这篇文章中极不必要的态度,并澄清了一些事情。

如果您不知道,
return
将控制权返回给方法/子例程的调用方。由于在创建字典之前从方法返回YES,因此不会创建字典并将其设置为属性

此外,您试图为其分配
NSMutableDictionary
的内容的语法不正确。personDict似乎是基于
@synthesis
的属性,因此:

您正在访问支持它的实例变量。您应该使用点符号访问属性,如下所示:

self.personDict = [NSMutableDictionary dictionaryWithContentsOfFile:@"diskDict"];

//in addToDict
[self.personDict setObject:@"newPerson" forKey:[newPerson name]];
或者使用setter和getter(点表示法具有相同的效果):

我不认为您使用的是
setObject:forKey:

//the object associated with the key will always be
//the NSString "newPerson" 
[self.personDict setObject:@"newPerson" forKey:[newPerson name]];
//did you mean to set the object to the method argument newPerson?
[self.personDict setObject: newPerson forKey:[newPerson name]];
此外,在Objective-C中,属性和变量的名称应采用驼峰大小写,第一个字母为小写。像
myCoolVar
,或者在本例中是
personDict
,而不是
personDict
;第一个字母大写的驼峰大小写用于类名,比如你的

最后,如果手动合成
@synthesis
,最好将支持变量命名为
\uu
,以避免意外访问它

@synthesize personDict = _personDict;

我能说什么呢,我是新来的,正在尽我所能去学习。这个问题原来是由于“returnyes”语句比其他语句更重要。谢谢。对不起,如果你觉得我在唠叨你,我没有;我是新来的。我认为学习Objective-C最好的方法是买一本好书;直接介入和适应往往会导致对基本概念的误解。我是根据这方面的经验说的。我已经做了几个月了(我也一直在用书),但有时当我试图找出更复杂的概念时,我倾向于掩盖基本的东西。顺便说一句,谢谢你的编辑。我也知道我哪里做错了。我也做了几个月了。起初我遇到了麻烦,但后来我拿到了一份编程iOS5的副本。它指示我阅读K&R的《C编程语言》的前半部分。有人说应该从Objective-C开始,但我发现通过学习C来学习子程序、数据类型、控制流、指针等基础知识对我有很大帮助。没过多久我就可以做这些练习了。然后,我可以专注于学习特定于面向对象编程的东西。PiOS5倾向于长篇大论,但到目前为止,它对我有效
@synthesize personDict = _personDict;