获取地址簿权限会导致iOS崩溃

时间:2014-12-02 03:56:55

标签: ios uiviewcontroller viewdidload

我正在使用Xcode 5.1.1上的iOS 7.1应用程序(当前无法升级),使用ARC和没有StoryBoard,当我在viewDidLoad方法中调用空方法时,应用程序崩溃了我的自定义方法结束。目前,我认为它是我的Xcode的旧版本,或者我没有使用StoryBoard的事实,但我尽可能地简化了代码,但仍然无法找到错误。如果有人能指出我做错了什么,那就太好了,谢谢!

崩溃只是说线程1:断点1.1,当[self.window makeKeyAndVisible]调用[viewController viewDidLoad]时崩溃。

ViewController.h

@interface XYZContactsTableViewController : UITableViewController

@end

ViewController.m:

- (id)initWithStyle:(UITableViewStyle)style
{
    self = [super initWithStyle:style];
    if (self) {

    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self getAddressBook];
}

- (void)getAddressBook {

} // App crashes at line point exactly

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    XYZContactsTableViewController *viewController = [[XYZContactsTableViewController alloc] init];
    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = navigationController;
    [self.window makeKeyAndVisible];
    return YES;
}

编辑: 此外,在viewDidLoad方法中调用纯C函数也有效,因此问题与viewController对象有关。

2 个答案:

答案 0 :(得分:2)

  

崩溃只是说线程1:断点1.1

啊哈。你根本没有崩溃。你只是在断点处暂停。如果您不想暂停,或者断点让您感到困惑,请取消断点或关闭断点。断点很棒,但你显然不了解它们,所以暂时把它们关掉(但最后要学会使用它们,因为它们非常酷!)。

答案 1 :(得分:0)

为什么不使用一些已经实现的组件? :) 查看KBContactsSelection,您可以搜索并选择多个联系人,并可使用优雅Builder Pattern轻松自定义。

KBContactsSelection screen