iPhone 上的弱链接无法正常工作

2024-07-04

我有一个 iPhone 应用程序,主要针对 3.0,但它利用了可用的新 API。代码是这样的:

if (UIApplicationDidEnterBackgroundNotification != NULL) {
    [nc
        addObserver: self
        selector:    @selector(irrelevantCallbackName:)
        name:        UIApplicationDidEnterBackgroundNotification
        object:      nil];
}

现在,根据 Apple 所说的一切,如果相关的 API 是弱链接的,那就可以正常工作,因为动态链接器会评估UIApplicationDidEnterBackgroundNotification to NULL。但事实并非如此。应用程序可以编译,但一旦运行if (UIApplicationDidEnterBackgroundNotification != NULL)它崩溃了EXC_BAD_ACCESS.

这只是我需要设置的编译器标志的问题吗?或者我以错误的方式处理这个问题?


我明白了。对于不是函数的符号 (extern const int foobar,例如),您必须与符号的地址进行比较,而不是符号本身,因此:

if (&UIApplicationWillEnterForegroundNotification != NULL)
    etc;

回想起来,这是显而易见的,但我仍然责怪我周围的整个宇宙从未提及这种区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iPhone 上的弱链接无法正常工作 的相关文章

  • 通过 NSOutputStream 发送 UIImage [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • 像核心动画老虎机一样在 z 轴上旋转

    我能够通过这里的代码移动或动画我的 UIView void makeAnim1 downward animation UIView animateWithDuration 1 5 delay 0 15 options UIViewAnima
  • 如何在 Cocoa 中从 MP3 文件中提取 ID 标签?

    请建议一些使用简单 API 提取 MP3 属性的方法 除了这个库还有其他库吗ID3 框架 http drewfamily homemail com au Cocoa ID3Tag framework html 我发现它相当过时并且存在内存泄
  • 无法追踪 [NSData getBytes:length:] 崩溃

    我有一个奇怪的EXC BAD ACCESS基金会内部坠毁 NSData NSData getBytes length 方法 这种情况经常发生 但我无法从堆栈跟踪中获取任何有意义的信息 没有人来电getBytes length 在我的代码中
  • 无法创建带有 nil 模型错误的 NSPersistentStoreCoordinator

    我有一个运行完美的 coreData 数据模型文件 由于一些特殊要求 我deleted旧的数据模型文件并创建另一个数据模型文件完全相同的实体 有实体没有变化来自之前的数据模型 我已将其作为不同的捆绑并从该包中引用它 用于创建 Managed
  • 如何获取上次启动时的 NSTimeInterval 值

    我需要从上次设备启动中获取 NSTimeInterval 值 我发现 CACurrentMediaTime 适合此任务 但在我的应用程序中 我没有使用 Core Animation 并且我认为这不是包含此框架以获取此功能的最佳方法 还有另一
  • 启用 iTunes 文件共享时隐藏 Core Data sqlite 文件

    我在我的应用程序中使用 iTunes 文件共享 并且需要将 Core Data sqlite 数据库放在其他地方 以便用户不会摆弄它 我读过了以前的SO帖子 https stackoverflow com questions 2942855
  • 使用 CoreAnimation 或 OpenGL 弯曲/扭曲视图以实现轮播效果

    现在我正在用一系列视图填充 UIScrollView 需要扭曲视图以使 UIScrollView 看起来像旋转木马 换句话说 当用户滚动时 它需要像一个圆圈 我以前从未做过类似的事情 但我假设 CoreAnimation 是不可能的 并且需
  • 使用本地时区将 unix 时间戳转换为 NSdate

    我得到一些start times and end times形式为NSDecimalNumber从 API 请求返回 我已经成功地能够转换这些NSDecimalNumbers into NSDates 但代码没有考虑时区 我需要它使用设备上
  • NSNumberFormatter numberFromString 十进制数

    我正在尝试解析NSString with a NSNumberFormatter喜欢跟随 NSNumberFormatter myFormatter NSNumberFormatter alloc init NSNumber myNumbe
  • 如何检测音效何时播放完毕?

    我正在使用 SimpleAudioEngine 并试图在继续之前检测声音效果是否已完成播放 我正在寻找任何方法 但我试图实现的方法不起作用 CDSoundEngine engine CDAudioManager sharedManager
  • 使用 UISearchBar 关闭键盘,而不放弃第一响应者

    嘿 我正在 iPhone 上开发一个基于导航的应用程序 类似于联系人应用程序 当您在搜索栏中输入内容并在表格中滚动 在联系人应用程序中 时 键盘就会消失 我不认为它会放弃第一响应者 因为当我尝试在 void scrollViewDidScr
  • 更改 iPhone UISlider 栏图像

    我正在使用一个UISlider在我的应用程序中 但我想为其使用自定义的 外观和感觉 我已将拇指更改为我自己的图像 但有没有办法也更改栏 我有一个想要使用的条形图像 但不知道如何执行此操作 我已经找到了如何更改最大和最小图像 但不是条形图本身
  • 在 UIPageViewController 中,当“pageViewController:viewControllerBeforeViewController”被调用时?

    我尝试在中显示照片UIPageViewController 首先 我在集合视图中显示我的照片 然后点击一张照片进入页面视图 然而 当我在页面视图中时 如果我滚动当前照片 向右或向左 我发现两者pageViewController viewC
  • AVAssetResourceLoaderDelegate 未被调用

    我一直在尝试在AVAssetResourceLoaderDelegate协议但它似乎从未被调用 我已经验证一切都发生在主线程上 从创建AVURLAsset 创建AVPlayerItem 创建委托 并将委托队列设置到主线程 我正在尝试流式传输
  • UIDatePicker 在 iOS 9 中无法正常显示

    我没有使用自动布局 这就是 UIDatePicker 在 iOS 9 上我的应用程序中的显示方式 选择器在 iOS 8 中看起来完美无缺 但问题仅存在于 iOS 9 中 知道如何解决此问题 P S 使用 auto布局目前对我来说不是一个解决
  • iOS 9 中的触觉

    您可以在 iPhone 6s 上使用 iOS 9 中的 Taptic 引擎吗 WatchOS2 和 OS X 能够使用触觉引擎 所以我认为 iOS 9 中也会有 但我找不到任何 API 是的 我对内部进行了逆向工程UIKit我发现了另一种
  • 导航栏标题视图对齐

    我希望我的导航栏在中间显示两件事 其中之一是列表名称 另一个是用户名称 用户名将放置在列表名称下 到目前为止我所做的是 我以编程方式创建了两个标签和一个超级视图 并设置titleView of navigationItem override
  • 应用程序删除后的iOS应用程序持久设置

    我们正在创建一个应用程序 如下所示 用户从 2 个免费 代币 开始 用户可以通过应用内购买 0 99 美元购买一包 10 个代币 我们已经实现了这个使用NSUserDefaults保存令牌数量 有没有办法让我们的免费 2 令牌设置持久化 即
  • 不要在 iOS 上显示蜂窝数据警告

    如果用户决定不允许应用程序在每次尝试打开应用程序时访问蜂窝数据 则会显示一条警告 告诉他们蜂窝数据已关闭 SDK中有没有办法停止显示此消息或控制其显示的时间 位置 如果您在权限被撤销的情况下尝试访问互联网 系统将显示此消息 为了防止它出现

随机推荐