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