【问题标题】:Everything temporarily becomes nil when anything happens当任何事情发生时,一切都会暂时为零
【发布时间】:2018-11-13 10:41:39
【问题描述】:

在我的viewDidLoad() 中我称之为:

NSString *testString = @"https://test.com/?code=12345";
NSDictionary *testParams = [self parseRequest:testString];

只是看看parseRequest 方法是否有效。该方法调用得很好:

但是当我更进一步(即方法中的任何代码执行)时,一切都变成了nil,我无法处理urlString

方法执行完成后,一切似乎恢复正常(除了parseRequest()方法中的代码都没有工作)

我尝试了以下方法,但都没有奏效:

  • 将方法内容移动到viewDidLoad()(当我对urlString采取行动时,一切仍然变为nil
  • 使用 URL 而不是 NSString

编辑:我尽可能地精简了整个班级。这是最终结果:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIWebView *webView;
@property (weak, nonatomic) IBOutlet UILabel *failureLabel;
@property (weak, nonatomic) IBOutlet UIProgressView *loadingBar;

@end

@implementation ViewController 

- (void) viewDidLoad {
    [super viewDidLoad];

    NSString *testString = @"https://test.com/?code=12345";
    NSString *testParams = [self parseRequest:testString];
}

- (NSString *) parseRequest:(NSString *)urlString {
    NSLog(@"???");
    return @"";
}

@end

这几乎肯定与UIWebView...有关吗? (我在界面生成器中创建了 webView,但即使我什么都不做,我仍然会遇到这个问题)

【问题讨论】:

  • 您是否只在viewDidLoad 上致电parseRequest?如果parseRequest 返回一个NSStringtestParams 是一个NSDictionary,这会不会有问题?
  • 发布viewDidLoad的完整代码
  • @trungduc 这只是我在黑暗中拍摄了半个小时试图找出发生了什么问题的结果。与问题无关
  • @PhilipS 你只在viewDidLoad上打电话给parseRequest吗?
  • @Philip S 我测试了你的代码工作完美尝试清理派生和关闭 xcode,而不是尝试之后

标签: ios objective-c nsurl


【解决方案1】:

值已经存在,调试器可能不会显示变量的值,因为

  1. 调试时当前配置的优化级别未设置为None

  2. 您正在使用发布配置进行调试,其中默认优化是最高的(最快、最小),如上图所示。

只需NSLog 变量urlString,即使LLDB 显示为nil,它也应该打印该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-25
    • 2013-04-22
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多