iphone - 为 iPad 和 iPhone 运行时创建不同的@properties

标签 iphone ios properties runtime ios-universal-app

我有一个通用应用程序,每个设备(iPad、iPhone)都有不同的属性集,如下所示:

//iPhone
@property (nonatomic, strong) CategoriesViewController *categoriesViewController;
//iPad
@property (nonatomic, strong) UIPopoverController *categoriesPopoverController;

但我不想浪费每个设备的内存合成属性。就像在我的情况下,当用户使用 iPhone 打开应用程序时,应该只创建 iPhone 特定的@properties。也适用于在 iPad 上运行的应用程序。

编译时是否有任何指令可以推迟此操作,例如:
#if UI_USER_INTERFACE_IDIOM() = iPhone
//create iPhone properties
#elseif UI_USER_INTERFACE_IDIOM() = iPad
//create iPad properties

有什么办法可以做到这一点,还是有更好的方法来处理这个?

谢谢!

最佳答案

没有办法完全按照你的要求去做。

  • 这种额外的内存使用真的很重要吗?像这样的属性每个对象实例只有 4 个字节。如果它在 Controller 之类的东西中,你只有一个(或几个)实例,那么这甚至不值得谈论。
  • 如果您确实需要这样做,请考虑创建一个抽象基类,然后为 iPad 和 iPhone 版本创建子类。在运行时,使用 UI_USER_INTERFACE_IDIOM()决定要实例化哪个类。
  • 关于iphone - 为 iPad 和 iPhone 运行时创建不同的@properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9615531/

    相关文章:

    iphone - 可以使用导航栏返回到上一个 View 而不丢失 View 的数据吗?

    iphone - 使 UIAlertView 按钮在按下时触发功能

    ios - 如何检查是否启用了按钮形状?

    python - 有时只读属性

    iphone - Objective-c Iphone 如何设置属性的默认值

    iphone - Facebook 页面链接在 Facebook 应用程序而不是 Safari 浏览器中打开

    css - iPhone Web App Div 标签在 Safari 中重新加载

    ios - 什么是 fence-hang/handling fence/blown-fence 错误?

    iOS 蓝牙与设备配对和取消配对

    ios - 难以在自定义 UITableViewCell 中设置属性